首页 > 代码库 > 常用Linux命令 备忘录
常用Linux命令 备忘录
1. 删除0字节文件:
find -type f -size 0 -exec rm -rf {} \; //在exec中,{}表示find到的文件,\;表示结束
2. 查看进程
按内存从大到小排列:ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
按cpu利用率从大到小排列:ps -e -o "%C : %p : %z : %a"|sort -nr
3. 检查SCSI硬盘Cache是否打开:
sdparm -g WCE /dev/sda |grep WCE |awk ‘{print $2}‘
4. 查看http的并发请求数及其TCP连接状态:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘
5. 查看TCP连接数:
netstat -na | grep "$ip:80" | wc -l
6. 查看当前有哪些进程在运行:
ps -A
7. 显示运行3级别开启的服务:
ls /etc/rc3.d/S* |cut -c 15-
8. 查看CPU的数量:
cat /proc/cpuinfo |grep -c processor
9. 查看CPU负载:
cat /proc/loadavg
10. 查看CPU信息:
mpstat 1 1 //检查%idle是否过低
11. 查看内存空间:
free //检查free值是否过低,也可以用cat /proc/meminfo
12. 查看swap空间:
free //检查swap used值是否过高 如果swap used值过高,进一步检查swap动作是否频繁
vmstat 1 5 //观察si和so值是否较大
13. 查看磁盘空间:
df -h //检查是否有分区使用率(Use%)过高(比如超过90%) 如发现某个分区空间接近用尽
du -cks * | sort -rn | head -n 10 //进入分区的挂载点,找出占用空间最多的文件或目录
14. 查看磁盘I/O负载:
iostat -x 1 2 //检查I/O使用率(%util)是否超过100%
15. 查看网络负载:
sar -n DEV //检查网络流量(rxbyt/s, txbyt/s)是否过高
16. 网络错误:
netstat -i //检查是否有网络错误(drop fifo colls carrier) 也可用命令:cat /proc/net/dev
17. 网络连接数目:
netstat -an | grep -E "^(tcp)" | cut -c 68- | sort | uniq -c | sort -n
18. 查看进程总数:
ps aux | wc -l //检查进程个数是否正常
19. 输出给定时间间隔的服务器的状态值:
vmstat 3 5 //第一个参数:采样间隔,单位是秒;第二个参数:采样数量
20. 实时进程查看:
top -id 1 //观察是否有异常进程出现
21. 网络状态、DNS、网关信息:
netstat -a //查看网络状态
route -n //查看网关信息
cat /etc/resolvconf/resolv.conf.d/original //DNS(Ubuntu)
22. 登陆用户数:
who | wc -l //查看登录用户数,也可以用命令:uptime
23. 系统日志:
grep -i error /var/log/syslog //通过搜寻异常关键字,检查是否有异常错误记录
grep -i fail /var/log/syslog
egrep -i ‘error|warn‘ /var/log/syslog
24. 系统启动信息日志:
dmesg | tail -f //检查最近一次开机的异常错误记录
25. 打开文件数目:
lsof | wc -l //检查打开文件总数
26. 查看80端口进程:
lsof -i :80|grep -v "ID"
27. 查找僵死进程:
ps -eal | awk ‘{ if ($2 == "Z") {print $4}}‘
28.查看有多少个活动的PHP-cgi进程:
netstat -anp | grep php-cgi | grep ^tcp | wc -l
29. 一次创建多个目录:
mkdir -p /home/ggf/shell {test1,test2,test3}
30. 快速备份一个文件:
cp file_name{,.bkp} //重命名一个文件:mv a.txt b.txt
31. 创建空文件或清空一个现有文件:
> test.txt
32. 显示剩余内存:
free -m | grep cache | awk ‘/[0-9]/{ print $4" MB" }‘
33. 获取test.txt文件中第50-60行内容:
< test.txt sed -n ‘50,60p‘
34. 搜索在30天内被创建或者修改过的文件:
find /usr/bin -type f -mtime -30
find /usr/bin -type f -amin -30 // 搜索出30分钟内被访问过的文件
35. 搜索以a-z结尾的行,行尾搜索$:
grep -n ‘[a-z]$‘ 123.txt
36. 查看当前目录下文件的个数:
ls -al |grep "^-"|wc -l
37. 显示日志最新内容(不断刷新显示最新日志):
tail -n 10 -f /var/log/syslog.log
38. 清除文件内容:
cat /dev/null > /home/users/example/aa.log
39. 使用base64编码 input.txt文件,并输出到input.b64:
openssl base64 -e -in input.txt -out input.b64
40. 使用base64 编码/解码字符串:
编码:echo -n ‘12345ssdlh‘ | openssl base64 -e
解码:echo ‘MTIzNDVzc2RsaA==‘ | openssl base64 -d
41. 显示所有22端口(ssh)连接:
netstat -nt |grep :22 |awk ‘{print $5}‘ |sort |uniq -c
42. 删除当前目录下所有以.tmp为后缀名的文件:
find .-type f -name "*.tmp" -delete
43. MD5和SHA校验:
md5sum filename
shasum filename
44. 一组查询硬件信息的命令:
lscpu: 用于查询CPU信息
lshw: 显示硬件信息表(需要root权限,最好输出到文件而不是终端)
hwinfo: 显示硬件信息(debug info,最好输出到文件。否则会像在 / 目录执行tree命令并输出到终端一样悲催)
lspci: PCI总线及设备信息
lsblk: 列出块设备信息
lsusb: 列出USB总线信息
lsscsi: 列出SCSI设备信息
45. 获得当前目录下文件的 md5指纹:
find . -type f -exec md5sum {} \; > sum.md5
46. 查看端口-进程 的详细情况:
lsof -Pan -i tcp -i udp
47. 猜测目标主机使用的操作系统(使用网络扫描工具 nmap):
nmap -O --osscan-guess www.ifeng.com //需要root权限
48. 扫描主机网络端口:
nmap -sS 61.18.85.17 //需要root权限,扫描主机TCP端口开放情况
nmap -sU 61.18.85.17 //需要root权限,扫描主机UDP端口开放情况
nmap -sTU localhost //检查本机(localhost)开放的端口
49. 探测域中的主机是否在线:
nmap -sP 192.168.1.0/24 //使用ping命令扫描,打印出对扫描做出响应的主机
nmap -sL 192.168.1.0/24 //列出指定网域上的每台主机,不发送任何报文到目标主机
50. Ubuntu12.04系统服务管理:
initctl list | grep start //查看系统当前运行状态为start的服务
51. 粉碎一个名为test.txt的文件:
shred –u test.txt //用随机的字符码重复覆盖文件,这条命令的功能适合实现文件粉碎的功效
//此命令包含在GNU core utilities软件包中。 参数 -u,--remove 覆盖后截断并删除文件
52. 安全删除工具wipe:
删除文件:wipe file.txt
删除目录:wipe -r /home/user/test/
删除分区:wipe /dev/sdb1
53.快速删除海量文件--使用rsync:
rsync --delete-before -a -H -v --progress --stats/tmp/test/log/ //快速删除海量日志的一个方法(rsync用的的替换原理,删除速度快)
//-delete-before 接收者在传输之前进行删除操作
//-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
//-H 保持硬连接的文件
//-v 详细输出模式
//-progress 在传输时显示传输过程
//-stats 给出某些文件的传输状态
54. 关于软件包的一组命令:
dpkg -L apt //查看已安装的文件清单
dpkg -S /usr/bin/apt-get //查找apt-get属于哪个包
dpkg-reconfigure apt //重新配置apt包
apt-cache depends apt //查找apt包的依赖包
apt-cache rdepends apt //查找依赖apt包的软件包
55. 使用最多的十个命令:
history | sed -e ‘s/^sudo //‘ | awk ‘{print $2}‘ | sort |uniq -c |sort -rn | head //运行过的命令会被Ubuntu保存到~.bash_history
//uniq命令可以查出或删除文件中相邻的重复行,通常与sort一起使用
56. 一组文件相关的命令:
切割及合并:
split -b 1MB -d MySQL.log mysql-log_ //以1MB为单位分割mysql.log文件,保存为以mysql-log_xx 为文件名的文件集
split -l 1000 syslog.log syslog_ //以一千行为一个单位分割syslog.log日志文件,保存为syslog_xx系列文件集
cat mysql-log_00 mysql-log_01 mysql-log_02 > mysql-log //合并分割的文件
替换字符:
cat file | tr p P //单字符替换
cat file | tr [a-z] [A-Z] //小写字母变大写字母
提取文本:
cut -d ‘ ‘ -f1,3 file //提取第一和第三字段的文本
cut -d ‘ ‘ -f1-3 file //提取第二到第四字段的文本
文本排序:
sort -n file.txt //按数字进行排序
为孤儿文件找爸爸:
find . -type f -nouser -exec chown username {} \; // 在当前目录下,将无主文件的user改为username
查找特殊文件:
find . -type d -perm -1000 -print //在当前目录下查找t位有效的文件
find . -type f -perm -4000 -print //在当前目录下查找查找suid位有效的文件
find . -type f -perm -2000 -print //在当前目录下查找sgid位有效的文件
find /dev -nogroup -nouser -print //查找无主文件
57.
58.
59.
60.
注:
重要原则:
Type less, accomplish more (少打多做)
DRY, don‘t repeat yourself (不要重复你自己)
Care about your tool (关心你的工具)
附:
学习命令每天都应该登录的网站:http://commandlinefu.cn/
常用Linux命令 备忘录