史上最全Linux常用指令汇总,又一吃灰教程

2022-04-07 10:52:26 浏览数 (1)

开发人员,必不可少的需要和Linux打交道,这里整理了经常会用到的一些Linux操作指令,能快速帮你熟悉并操作Linux服务器

本教程会在后续的使用中持续更新,最新更新请关注:https://lupf.cn/articles/2020/12/22/1608639406803.html

文件
文件夹操作

查看当前所在目录

代码语言:javascript复制
pwd

查看目录下文件

代码语言:javascript复制
ls -a
ll  # 以列表形式显示目录下文件

打开目录

代码语言:javascript复制
cd /user/local  #从根目录开始进入到/user/local目录
cd local  #从当前目录开始,进入到local目录
cd ..  #返回到上级目录

创建文件夹

代码语言:javascript复制
mkdir /user/local/user  # 从根目录开始,创建/user/local/user,此操作必须/user/local存在
mkdir -p /user/local/user # 创建目录,任何一级的目录不存在,都会创建

删除文件

代码语言:javascript复制
rm -ri /test  #删除根目录下的test;此操作会引导用户确认;输入y回车删除
rm -rf /test  #直接删除,不需要再次确认

移动或修改文件名

代码语言:javascript复制
mv /test1 /test2 # 将test1移动到test2 也可以理解为重命名为test2

本地拷贝

代码语言:javascript复制
cp -rf /test /user/local  # 将根目录下的test拷贝到/user/local

远程拷贝

代码语言:javascript复制
scp -rf /test root@192.168.1.123:/user/local 
# 将本机根目录下的test目录拷贝到192.168.1.123的/user/local目录下
# root为192.168.1.123的用户名;回车之后需要输入密码
# 如果设置了免密登录,会直接拷贝过去
文件查看

查看前n行内容

代码语言:javascript复制
head -n /testfile  # n为要查询的行数 如 head -3 /testfile,表示查询testfile的前三行

查看后n行内容

代码语言:javascript复制
tail -n /testfile  # n 和上面的意思一样

cat输出文件的所有内容

代码语言:javascript复制
cat /testfile

查看文件实时更新

代码语言:javascript复制
tail -f /testfile  # 文件的更新会实时展示出来

输出内容到文件

代码语言:javascript复制
echo "输出内容" >> /testfile  # 追加内容到文件后面
echo "输出内容" > /testfile   # 覆盖原有内容
文件压缩解压

tar.gz

  • 解压 tar -zxvf filename.tar.gz

tar.bz2

  • 解压 tar -jxvf filename.tar.bz2

tar

  • 解压 tar –xvf filename.tar

tar.Z

  • 解压 tar –xZvf filename.tar.Z

rar

需要先安装rar

  • 解压 unrar e filename.rar

zip

需要先安装zip

  • 解压 unzip filename.zip
文件查找

根据名称查找

代码语言:javascript复制
find / -name testfile
文件编辑

编辑文件

代码语言:javascript复制
vi /testfile  # 开始编辑testfile

进入编辑模式

代码语言:javascript复制
i
insert
# 按键盘i或者insert会进入编辑模式,左下角会有个--insert--

退出编辑模式

按esc即可退出编辑模式,退出后上图显示的insert会消失

进入命令行模式

代码语言:javascript复制
# 非编辑模式下使用shift加:(英文模式下)进入命令行
shift   :

关键词查找

查找文件中的关键词

代码语言:javascript复制
:/要查找的关键词      #如要查找34

按n会往下查找下一个
按shift   n往上查找上一个 n和shift   n都是滚动查询的

保存并退出(命令行模式下)

代码语言:javascript复制
wq

强制保存并退出(慎用)

多人同时操作的时候,wq保存会失败,可以使用强制保存

代码语言:javascript复制
wq!

强制退出放弃修改(慎用)

代码语言:javascript复制
q!

文件内复制粘贴

  • 终端下 ctrl shift c # 复制 ctrl shift v # 粘贴
服务

查询某个服务的进程

如查询java

代码语言:javascript复制
ps -ef | grep java

服务操作;开启、暂停、重启、自启动等

代码语言:javascript复制
systemctl start docker.service    #启动一个服务
systemctl stop docker.service     #关闭一个服务
systemctl restart docker.service  # 重启一个服务
systemctl status docker.service   # 显示一个服务的状态
systemctl enable docker.service   # 在开机时启用一个服务
systemctl disable docker.service  # 在开机时禁用一个服务
systemctl is-enabled docker.service     # 查看服务是否开机启动
systemctl list-unit-files|grep enabled  # 查看已启动的服务列表
systemctl --failed  # 查看启动失败的服务列表

杀掉某个进程

代码语言:javascript复制
kill -9 进程号    # 如上可以使用kill -9 2336 即可杀掉2336对应的java进程

服务端口查看

  • 查看端口监听情况 ss -tnl
  • 使用net-tools查看端口 yum install -y net-tools netstat -tunl | grep ':80' netstat -tunlp netstat -apn | grep ':80' netstat -ntu 查看连接数 netstat -nat|grep -i "80"|wc -l
定时任务
crontab说明
代码语言:javascript复制
crontab [-u username]
    -e      (编辑定时任务)
    -l      (列出定时任务里的命令)
    -r      (删除定时任务)
定时任务格式

格式

代码语言:javascript复制
*  *  *  *  *   command
分 时 日  月 周   指令

操作符

  • * 取值范围内的所有数字
  • 横杠 - 从X到Z
示例

示例1:每1分钟执行一次执行

代码语言:javascript复制
* * * * * echo "hello" >> /test/hello.txt

示例2:每小时的第3和第15分钟执行

代码语言:javascript复制
3,15 * * * * echo "hello" >> /test/hello.txt

示例3:在上午8点到11点的第3和第15分钟执行

代码语言:javascript复制
3,15 8-11 * * * echo "hello" >> /test/hello.txt

示例4:每隔两天的上午8点到11点的第3和第15分钟执行

代码语言:javascript复制
3,15 8-11 */2  *  * echo "hello" >> /test/hello.txt

示例5:每周一上午8点到11点的第3和第15分钟执行

代码语言:javascript复制
3,15 8-11 * * 1 echo "hello" >> /test/hello.txt

示例6:每晚的21:30执行

代码语言:javascript复制
30 21 * * * echo "hello" >> /test/hello.txt

示例7:每月1、10、22日的4 : 45执行

代码语言:javascript复制
45 4 1,10,22 * * echo "hello" >> /test/hello.txt

示例8:每周六、周日的1 : 10执行

代码语言:javascript复制
10 1 * * 6,0 echo "hello" >> /test/hello.txt

示例9:每天18 : 00至23 : 00之间每隔30分钟执行

代码语言:javascript复制
0,30 18-23 * * * echo "hello" >> /test/hello.txt

示例10:每星期六的晚上11 : 00 pm执行

代码语言:javascript复制
0 23 * * 6 echo "hello" >> /test/hello.txt

示例11:每一小时执行

代码语言:javascript复制
* */1 * * * echo "hello" >> /test/hello.txt

示例12:晚上11点到早上7点之间,每隔一小时执行

代码语言:javascript复制
* 23-7/1 * * * echo "hello" >> /test/hello.txt
注意事项
  • 目录创建 如上示例中,如果出现文件夹的输出,那么文件夹必须存在
  • 指令 环境变量中的指令手动执行的时候,可以快捷输入,但定时任务就必须输入全路径
权限
权限定义
代码语言:javascript复制
-rw-r--r--. 1 root root 4 Dec 22 18:28 /testfile

[rw-]           [r--]           [r--]
文件所有者的权限   文件所在组的权限   其他组的权限
用户组操作
代码语言:javascript复制
useradd    #用于创建用户
groupadd   #用于创建组
usermod    #用于修改用户属性
权限说明

文件夹

代码语言:javascript复制
r     # 只能读取文件列表
w     # 没有任何作用
x     # 可以进入目录
rw    # 可以读文件列表,依旧无法删除文件
rx    # 读取文件列表,可以cd进mul,但是无法删除目录下的文件,对文件有w权限可以清空或者写入
wx    # 可以增加和删除目录中文件,可以cd进目录,但是无法查看目录有哪些内容,知道文件名可以打开文件
rwx   # 可以进入目录,显示目录中内容,可以增删目录中文件

文件

代码语言:javascript复制
r     # 读取文件内容
w     # 写入
x     # 执行,单独的执行权限只能运行二进制可执行文件
rw    # 可读可写
rx    # 可以执行二进制之外的编译类或者脚本类的文件
wx    # 可以修改内容,无法查看,可以执行二进制可执行文件
rwx   # 可以查看文件内容,可以增删文件内容,可以执行可执行文件
数字权限说明
代码语言:javascript复制
r : 4
w : 2
x : 1

权限拆解
[-rwxrwxrwx]
[r w x] [r w x] [r w x]
[4 2 1] [4 2 1] [4 2 1]  ==> 权限值为:777

[-rwxr-xr--]
[r w x] [r - x] [r - -]
[4 2 1] [4 0 1] [4 0 0]  ==> 权限值为:754
设置权限
代码语言:javascript复制
chmod 777 /testfile   # 其中777为根据上面的数字权限方式计算出来的
机器相关
cpu

查看CPU个数

  • 查看物理CPU的个数 cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

查看CPU核数

代码语言:javascript复制
cat /proc/cpuinfo | grep "cpu cores" | uniq

查看CPU型号

代码语言:javascript复制
cat /proc/cpuinfo | grep 'model name' |uniq

查看CPU的主频

代码语言:javascript复制
cat /proc/cpuinfo |grep MHz|uniq

查看CentOS版本

代码语言:javascript复制
cat /etc/redhat-release

查看操作系统内核版本

代码语言:javascript复制
cat /proc/version

查看bios信息

代码语言:javascript复制
dmidecode -t bios
内存

查看内存总数

代码语言:javascript复制
cat /proc/meminfo | grep MemTotal

查看内存条数

代码语言:javascript复制
dmidecode | grep -A16 "Memory Device$"
磁盘

查看硬盘大小

代码语言:javascript复制
fdisk -l | grep Disk

查看磁盘占用

  • 查看整个磁盘占用全款 df -h
  • 按空间占用排序 du -s * | sort -nr | head 选出排在前面的10个 du -s * | sort -nr | tail 选出排在后面的10个
网卡

查看网卡硬件信息

代码语言:javascript复制
lspci | grep -i 'eth'

查看系统的所有网络接口

代码语言:javascript复制
ip addr
时间

查看时间

代码语言:javascript复制
date

更新时间

代码语言:javascript复制
# 安装ntpdate
yum install -y ntpdate
# 更新时间
ntpdate 0.asia.pool.ntp.org
# 将系统时间同步到硬件,防止系统重启后时间被还原
hwclock --systohc
其他更多操作

以下命令也是比较常用的,可根据需要使用

代码语言:javascript复制
uname -a   # 查看内核/操作系统/CPU信息的linux系统信息  
head -n l /etc/issue  # 查看操作系统版本  
cat /proc/cpuinfo     # 查看CPU信息  
hostname  # 查看计算机名的linux系统信息命令  
lspci -tv # 列出所有PCI设备  
lsusb -tv # 列出所有USB设备的linux系统信息命令  
lsmod     # 列出加载的内核模块  
env       # 查看环境变量资源  
free -m   # 查看内存使用量和交换区使用量  
df -h     # 查看各分区使用情况  
du -sh    # 查看指定目录的大小  
grep MemTotal /proc/meminfo  # 查看内存总量  
grep MemFree /proc/meminfo   # 查看空闲内存量  
uptime    # 查看系统运行时间、用户数、负载  
cat /proc/loadavg   # 查看系统负载磁盘和分区  
mount | column -t   # 查看挂接的分区状态  
fdisk -l    # 查看所有分区  
swapon -s   # 查看所有交换分区  
hdparm -i /dev/hda   # 查看磁盘参数(仅适用于IDE设备)  
dmesg | grep IDE     # 查看启动时IDE设备检测状况网络  
ifconfig      # 查看所有网络接口的属性  
iptables -L   # 查看防火墙设置  
route -n      # 查看路由表  
netstat -lntp # 查看所有监听端口  
netstat -antp # 查看所有已经建立的连接  
netstat -s    # 查看网络统计信息进程  
ps -ef # 查看所有进程  
top    # 实时显示进程状态用户  
w      # 查看活动用户  
id     # 查看指定用户信息  
last   # 查看用户登录日志  
cut -d: -f1 /etc/passwd   # 查看系统所有用户  
cut -d: -f1 /etc/group    # 查看系统所有组  
crontab -l       # 查看当前用户的计划任务服务  
chkconfig –list  # 列出所有系统服务  
chkconfig –list | grep on # 列出所有启动的系统服务程序  
rpm -qa # 查看所有安装的软件包  
cat /proc/cpuinfo     # 查看CPU相关参数的linux系统命令  
cat /proc/partitions  # 查看linux硬盘和分区信息的系统信息命令  
cat /proc/meminfo     # 查看linux系统内存信息的linux系统命令  
cat /proc/version     # 查看版本,类似uname -r  
cat /proc/ioports     # 查看设备io端口  
cat /proc/interrupts  # 查看中断  
cat /proc/pci         # 查看pci设备的信息  
cat /proc/swaps       # 查看所有swap分区的信息  

部分内容参考于: dwz-9.cn/0S8fS

0 人点赞