常用到的 Linux 命令(珍藏)
前一段时间公司安全检查,然后被安排到去给N台机器修改agent双机,修复漏洞,因此也熟悉了一些命令,这里就系统记一下,这里记录自己会用到的,详细的看参考文章
系统/网络/内存/路由
1. arch / uname -r
#查看内核版本
2. hostname
#查看机器名
3. ifconfig eth0
#查看当前网络ip(内网)等信息,eth0 指网卡接口
4. 一般需要用到的场景就是,两个系统之间,A需要访问B接口,信通已经开通了A访问B的网络,而还是无法访问B的接口,这种情况可能就是B没有添加A系统的路由地址,这时就需要加上
Linux: route / route -n windows: route print #查看路由信息
route add -net 0/0 gw [IP_Gateway] #配置默认网关(这里用到的情况是:两个系统A需要对B进行接口调用,便开通安全防火墙,同时B需要添加A的路由,不然哪怕开通了网络也无法ping通)
方式一: route add -net [需要添加的ip:192.168.0.0] netmask [网络掩码,一般是255.255.0.0] gw [网关地址:查看路由信息即可127.0.0.1] #配置静态路由到达网络'192.168.0.0/16'
方式二: route -p add 10.0.0.0 mask 255.255.255.0 127.0.0.1
route del 0/0 gw [IP_gateway] #删除静态路由
route del -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 #删除路由
5. free -h
#查看内存大小
free是未被使用的内存,available是应用程序认为可用的内存
total = used + free + buffer/cache
avaiable = free + buffer/cache(服务器或者公共云普通用户有部分buffer/cache是用不了的就会有avaiable < free + buffer/cache)
6. top
#查看当前运行占用内存情况(有时候服务器被挖矿了,可以从这里开始排查),详细参数看下面, 参考:[传送门];[传送门2]
"shift + m" #内存进行排序(默认是cpu排序)
ps -ef |grep PID #查看相应进程情况
kill -9 [pid]
#删除进程
1. 第一排
top - 14:39:05 up 36 days, 21:26, 3 users, load average: 56.31, 55.92, 56.03
- top:名称
- 14:39:05:系统当前时间
- up 36 days, 21:26:系统以及运行的时间,和uptime命令相等
- 3 users:当前有3个用户在线
- load average: 56.31, 55.92, 56.03:系统一定时间内的平均负载,分别是1分钟、5分钟、15分钟。在一段时间内,CPU正在处理以及等待CPU处理的进程数之和, 系统在同一时间运行的进程数和系统CPU核数相关,一般来说Load Average的数值别超过这台机器的总核数,就没什么问题
2. 第二排
Tasks: 265 total, 2 running, 263 sleeping, 0 stopped, 0 zombie
- Tasks:任务,也就是进程
- 265 total:当前总共有265个任务,也就是265个进程
- 2 running:2个进程正在运行
- 263 sleeping:263个进程正在休眠
- 0 stopped:0个停止的进程
- 0 zombie:1个僵尸进程
3. 第三排
%Cpu(s): 88.9 us, 7.9 sy, 0.0 ni, 1.7 id, 0.0 wa, 1.4 hi, 0.0 si, 0.0 st
- %Cpu(s):CPU使用率
- 88.9 us:用户空间占用CPU时间的百分比(大部分进程都运行在用户态,通常都是希望用户空间CPU越高越好)
- 7.9 sy:内核空间占用CPU时间的百分比(Linux内核态占用的CPU时间,系统 CPU占用越高,表明系统某部分存在瓶颈。通常这个值越低越好)
- 0.0 ni:占用CPU时间的百分比(ni是nice的缩写,进程用户态的优先级,如果调整过优先级,那么展示的就是调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
- 1.7 id:空闲CPU占用率,等待进程运行
- 0.0 wa:等待输入输出的CPU时间百分比(CPU的处理速度是很快的,磁盘IO操作是非常慢的。wa表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈)
- 1.4 hi:CPU硬中断时间百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
- 0.0 si:CPU软中断时间百分比(软中断是由程序发出的中断 )
- 0.0 st:被强制等待(involuntary wait)虚拟 CPU 的时间,此时 Hypervisor 在为另一个虚拟处理器服务
4. 第四排
MiB Mem : 15508.4 total, 3858.4 free, 3369.3 used, 828.07 buff/cache
- MiB Mem:内存
- 15508.4 total:物理内存总量
- 3858.4 free:空闲内存量
- 3369.3 used:已使用的内存量
- 828.07 buff/cache:用作内核缓存的内存量
5. 第五排
MiB Swap: 4096.0 total, 3855.1 free, 240.9 used. 10823.7 avail Mem
- MiB Swap:交换空间(虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟城内存使用)
- 4096.0 total:交换区总量
- 3855.1 free:空闲交换区总量
- 240.9 used:使用的交换区总量
- 10823.7 avail Mem:可用于启动一个新应用的内存(物理内存),和free不同,它计算的是可回收的page cache和memory slab
6. 进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PID:进程id
- USER:进程所有者
- PR:进程的优先级,越小优先级越高
- NI:nice值,负值表示高优先级,正值表示低优先级
- VIRT:进程使用的虚拟内存,单位是kb
- RES:进程使用的物理内存,单位kb
- SHR:进程使用的共享内存,单位kb
- S:进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
- %CPU:进程占用的CPU使用率
- %MEM:进程使用的物理内存和总内存的百分比
- TIME+:进程使用的CPU时间总计,单位1/100秒
- COMMAND:命令行
7. df -h
#显示已经挂载的分区列表(系统上可使用的磁盘空间),单位为KB
![image-1659516273918](https://image.chenhuadadao.cn/image/image-1659516273918.png)
8. netstat -tunlp | grep 8080
#查看端口是否被占用
lsof -i:8080
9. 查看cup个数: nproc /
查看每个cpu详情: cat /proc/cpuinfo
防火墙
1. 查看/关闭/开启/重启防火墙
systemctl status/stop/start/restart firewalld
2. 查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
3. 查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
4. 添加临时开放端口(例如:比如我修改ssh远程连接端口是22,则需要开放这个端口)
firewall-cmd --add-port=22/tcp
5. 添加永久开放的端口(例如:222端口)
firewall-cmd --add-port=222/tcp --permanent
6. 关闭临时端口
firewall-cmd --remove-port=22/tcp
7. 关闭永久端口
firewll-cmd --remove-port=222/tcp --permanent
8. 配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld
时间
1. #显示当前/指定日期
cal / cal [年份]
2. #显示当前系统时间
date
# 关机
shutdown -h now #关闭系统(1)
init 0 #关闭系统(2)
telinit 0 #关闭系统(3)
shutdown -h hours:minutes & #按预定时间关闭系统
shutdown -c #取消按预定时间关闭系统
shutdown -r now #重启(1)
reboot #重启(2)
logout #注销
远程连接
这次涉及到很多服务器,一个个去打开新窗口就很费时间,所以这个命令还是挺有用的
1. ssh user@ip
#远程连接其他服务器,提示输入密码即可
2. ssh -p 10022 user@ip
#指定端口远程
远程文件复制/替换
将本机和另一条的机器的文件通过命令互相复制或者替换(文件不存在就是复制,存在则自动替换)
#将当前服务器的aa.txt文件复制/替换到172.11.1.1服务器(root账号),如果不指定文件,则是复制/替换整个文件夹下的东西
1. scp -P 10022 -r /home/test/aa.txt root@172.11.1.1:/home/test
#与上面相反,从172.11.1.1服务器复制/替换到本服务器当前路径
2. scp -P 10022 -r root@172.11.1.1:/home/test/bb.txt ./
# 文件和目录
1. cd ..
#返回上一次
2. cd /
#返回根目录
3. pwd
#显示当前路径
4. touch aa.txt
#创建一个文件
4. mkdir xx
#创建文件夹
5. mkdir xx tt
#同一目录创建多个文件夹
6. mkdir -p xx/tt/yy
#创建多级目录文件夹
7. rm -f file1
#删除一个叫做 'file1' 的文件'
8. rmdir dir1
#删除一个叫做 'dir1' 的目录'
9. rm -rf dir1
#删除一个叫做 'dir1' 的目录并同时删除其内容
10. rm -rf dir1 dir2
#同时删除两个目录及它们的内容
11. mv dir1 new_dir
#重命名/移动 一个目录
12. cp file1 file2
#复制一个文件
13. cp dir/* .
#复制一个目录下的所有文件到当前工作目录
14. cp -a /tmp/dir1 .
#复制一个目录到当前工作目录
15. cp -a dir1 dir2
#复制一个目录
16. cat file1
#从第一个字节开始正向查看文件的内容
17. tac file1
#从最后一行开始反向查看一个文件的内容
18. head -2 file1
#查看一个文件的前两行
19. tail -2 file1
#查看一个文件的最后两行
20. tail -f file
#实时查看一个文件中的内容,通常查看日志用
21. #编辑文件.并搜索内容
vim aa.txt
/[搜索内容]
文件查找
1. find / -name file1
#从 '/' 开始进入根文件系统搜索文件和目录
2. find /home/user1 -name \*.bin
#在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
3. find /usr/bin -type f -mtime -10
#搜索在10天内被创建或者修改过的文件
4. whereis halt
#显示一个二进制文件、源码或man的位置
5.du -sh /xxx
#查看文件大小
6.du -a | sort -n -r | head -n 20
#查找前20个最大的文件
7.find /var/mail/ -type f -size +100M
#查找大于100MB的邮件文件
8.ps aux | grep sendmail | less
分页查看进程,空格下一页,q退出
用户和群组
1. useradd user1
#创建一个新用户
2. userdel -r user1
#删除一个用户 ( '-r' 排除主目录)
3. sudo passwd username xxx
#修改一个用户的口令 (root)
4. shown test:test /usr/demo
#修改文件所属用户权限(把demo改为test用户权限)
5. cat /etc/passwd
#查看所有用户名
6. who
# 当前登录的用户信息
7.chage -l 用户名
#查看用户密码过期时间
8.chage -M 天数 用户名 #修改密码过期时间
9.chage -M 99999 用户名(设置用户密码永不过期)
10.sudo passwd 用户名 #更新密码
sudo p asswd usernaesudo passwd username
打包和压缩文件
1. tar -cvfz archive.tar.gz dir1
#创建一个gzip格式的压缩包
2. tar -zxvf archive.tar.gz
#解压一个gzip格式的压缩包
3. rar a file1.rar test_file
#创建一个叫做 'file1.rar' 的包
4. rar a file1.rar file1 file2 dir1
#同时压缩 'file1', 'file2' 以及目录 'dir1'
5. rar x file1.rar
#解压rar包
6. zip file1.zip file.txt
#创建一个zip格式的压缩包
7. zip -r file1.zip file1.txt file2.txt dir1
#将几个文件和目录同时压缩成一个zip格式的压缩包
8. unzip file1.zip
#解压一个zip格式压缩包
服务启动/关闭/重启
#大部分都是以下两种命令,具体以服务自身命令为准,这只做参考
1. systemctl start/stop/status [服务名]
2. service [服务名] start/stop/status