列出文件或目录信息
|
1 |
ls -ltrAR test |

显示变量或文本
|
1 |
echo $PATH |
有些系统没有安装诸如vi等编辑器,可以用echo和3个单引号和重定向创建简单文本文件
|
1 2 3 4 |
echo ''' spring.application.name=test server.port=8080 ''' > application.properties |

显示文件内容
|
1 |
cat /dev/null > ./test.txt |
|
1 |
cat -n test.txt |

|
1 |
grep -E 'pattern1.*pattern2' [files] |
|
1 |
grep -E 'pattern1|pattern2' [files] |
|
1 |
grep -v pattern [files] |
|
1 |
grep -l -r -E 'hello|world' test |

|
1 |
grep -r -c hello test |

查找文件或目录
|
1 |
find . -type d -name *log |

|
1 |
find test -type f -cmin -5 -size +1k |

|
1 |
find test -type f -size +1M \( -name *.jpg -or -name *.png \) |
|
1 |
find test -type f -size +1M -and ! -name *.bin |
或
|
1 |
find test -type f -size +1M -and -not -name *.bin |
统计数量
|
1 |
wc -l test/*.txt |

|
1 |
ls test/*.txt | wc -l |

分割并输出字段
|
1 |
cut -d ' ' -f 2 test/test.txt |

|
1 |
cut -d ':' -f 2-3 test/test.txt |

显示文件前几行或前几个字节内容
|
1 |
head -n 20 test.txt |
显示文件最后几行内容
|
1 |
tail -n 20 test.txt |
|
1 |
tail -f -n 20 test.txt |
|
1 |
tail -f -n 20 -s 10 test.txt |
查看文件内容(同more相比,more只能往后查看内容,不能往前,less功能更强大,建议用less替换more)
|
1 |
ps -ef | less |
更改文件权限
|
1 |
chmod a+w test.txt |
或
|
1 |
chmod ugo+w test.txt |
或
|
1 |
chmod +w test.txt |

|
1 |
chmod ug+w,o-w file1.txt file2.txt |
|
1 |
chmod -x test.sh |
|
1 |
chmod -R ug+rw,o-w test |
|
1 |
chmod 744 test.sh |
设置文件的所有者和组
|
1 |
chown ucmed test.sh |
|
1 |
chown ucmed:ucmed test.sh |
|
1 |
chown :ucmed test.sh |
|
1 |
chown -R ucmed:ucmed test |

链接
软链接:
硬链接:
|
1 |
ln -s libtest.1.2.1.so libtest.1.2.so |
|
1 |
ln -s /mnt/sda/mysql /mysql |
|
1 |
ln a.txt b.txt |
拷贝文件、目录
远程拷贝
|
1 |
scp root@192.168.1.2:~/test.txt ./other-name.txt |
|
1 |
scp -P 5122 ./test.txt root@192.168.1.2:/root/ |
|
1 |
scp -r root@192.168.1.2:/root/test ./test |
|
1 |
scp -i my.key test.txt root@192.168.1.2:/root/ |
在环境变量$PATH设置的目录里查找符合条件的文件
创建目录
|
1 |
mkdir -p ./a/b/c |

显示当前工作目录
文本文件处理
注:
|
1 |
sed -n '5,7p' test.txt |

|
1 |
sed -e '1i pre' test.txt > new.txt |

|
1 |
sed -e '5,$d' test.txt |

|
1 |
sed '2,5c new line' test.txt |

|
1 |
sed -n '/hello/p' test.txt |

|
1 |
sed -i 's/hello/hi/g' test.txt |

|
1 |
sed -i -e '4,5d' -e 's/hello/hi/g' test.txt |

文本分析处理
语法:
|
1 |
awk [选项参数] 'script' var=value file(s) |
或
|
1 |
awk [选项参数] -f scriptfile var=value file(s) |
|
1 |
ls -l test/*.txt | awk '{print $9,$5}' |

|
1 |
awk 'NR%2==1' test.txt |
|
1 |
awk -F\; '$1 ~ /test/ { print $1,$3 }' test.txt |
|
1 |
awk '{ print FNR "\t" $0 }' test.txt |
|
1 |
awk '{ print FNR " " NF}' test.txt |
如echo ,rm, mkdir, ls等这些命令只接受命令行参数,不能把标准输入作为参数, xargs将标准输入(特别是管道输出)转换为命令行参数
|
1 |
find test -name "*" -type f -size 0 | xargs -n 1 rm -f |
或
|
1 2 |
<span class="hljs-built_in">find</span> test -<span class="hljs-built_in">name</span> <span class="hljs-string">"*"</span> -<span class="hljs-built_in">type</span> f -<span class="hljs-built_in">size</span> <span class="hljs-number">0</span> -print0 | xargs -<span class="hljs-number">0</span> rm -f |

|
1 |
find test -name *.txt -type f -print0 | xargs -0 grep -l hello |
注:另外的方案:
|
1 |
grep -r -l world test |
在大量大文件场景grep效率会低一些,因为grep会搜索所有文件的内容,而find+xargs只找符合条件的文件并逐个搜索内容,大量大文件场景建议用find + xargs方案
显示目录和文件所占磁盘大小
注:此大小不是文件大小,而是所占磁盘block的大小,一般一个block为4k,所以即使文件只有1个字节,也要分配一个block来存储,此时所占磁盘大小也是4k
|
1 |
du -h |
|
1 |
du -hs test |

显示磁盘使用情况
|
1 |
df -h |

显示或设置网络设备
|
1 |
ifconfig |
显示网络状态
|
1 |
netstat -i |
|
1 |
netstat -an | grep 8080 |
|
1 |
netstat -an | grep 192.168.1.2 |
|
1 |
netstat -antp |

抓包(有些系统需要额外安装)
|
1 |
tcpdump -i eth0 host 192.168.1.2 |
|
1 |
tcpdump -i l0 port 8080 |
|
1 |
tcpdump -i eth0 host 192.168.1.2 and port 8080 |
|
1 |
tcpdump -i eth0 dst host 192.168.1.2 |
|
1 |
tcpdump -i eth0 src host 192.168.1.2 |
|
1 |
tcpdump -i eth0 port 8080 -w test.pcap |
|
1 |
tcpdump -i eth0 -c 200 port 8080 |
|
1 |
tcpdump -i ens160 \( dst host 192.168.1.2 and dst port 8080 \) or \( src host 192.168.1.3 and dst port 8081 \) |
显示进程状态
|
1 |
ps -ef |
显示列:
|
1 |
ps -aux |
同ps -ef 不同的有列有
杀死进程或通知进程
| 信号编号 | 信号名 | 含义 |
|---|---|---|
| 0 | EXIT | 程序退出时收到该信息 |
| 1 | HUP | 挂起或重新初始化 |
| 2 | INT | 结束进程,常用的 “Ctrl+C” 组合键发出就是此信号 |
| 3 | QUIT | 退出 |
| 9 | KILL | 杀死进程,即强制结束进程 |
| 11 | SEGV | 段错误信号 |
| 15 | TERM | 默认信号,正常结束进程 |
注:
|
1 |
kill 12345 |
或
kill -TERM 12345
|
1 |
kill -9 12345 |
或
kill -KILL 12345
显示系统日期时间
切换登录用户
|
1 |
su root |
以root身份执行命令
|
1 |
sudo chmod +x test.sh |
显示系统内存使用情况
|
1 |
free -h |

|
1 |
free -m |
实时显示进程动态
列含义:
常用命令:
|
1 |
top -p 12345 |
显示或设置系统资源
|
1 |
ulimit -a |
|
1 |
ulimit -n 65535 |
或
|
1 |
sudo sh -c "ulimit -n 65535 && exec su $LOGNAME" |
设置或显示环境变量
|
1 |
export -p |
|
1 |
export WORKSPACE=/nsfw |
删除环境变量或函数
|
1 |
unset WORKSPACE |
在系统后台不挂断地运行命令,退出终端不会影响程序的运行,用于长时间或永不退出任务。
|
1 |
nohup python test.py & |
zip压缩
|
1 |
zip -r test.zip ./test |
|
1 |
zip test.zip test1.txt test2.txt |
zip解压缩
|
1 |
unzip -v test.zip |
|
1 |
unzip test.zip |
|
1 |
unzip -d /tmp/test test.zip |
gzip压缩、解压缩(只处理文件,不处理目录)
|
1 |
gzip -c test.txt > test.gz |
|
1 |
gzip -d -c test.gz > test.txt |
tar压缩、解压缩
|
1 |
tar cvf test.tar ./test |
|
1 |
tar xvf test.tar |
或
|
1 |
tar xvf test.tar -C /tmp/ |
|
1 |
tar zcvf test.tgz ./test |
|
1 |
tar zxvf test.tgz |
|
1 |
tar -jcvf test.bz2 ./test |
|
1 |
tar -jxvf test.bz2 |
|
1 |
tar -Jcvf test.xz ./test |
|
1 |
tar -Jxvf test.xz |
|
1 2 3 |
uname -a cat /proc/version cat /etc/redhat-release |

总核数 = 物理CPU个数 X 每颗物理CPU的核数
|
1 |
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l |
|
1 |
cat /proc/cpuinfo| grep "cpu cores"| uniq |
|
1 |
cat /proc/cpuinfo| grep "processor"| wc -l |
如果
|
1 |
top |
或
|
1 |
free -h |
显示的内存被buff/cache占用过多。可以:先同步缓存到磁盘,防止数据丢失:
|
1 |
sync |
释放pagecache:
|
1 |
sudo sh -c "echo 1 >/proc/sys/vm/drop_caches" |
释放dentries and inodes:
|
1 |
sudo sh -c "echo 2 >/proc/sys/vm/drop_caches" |
二者都释放:
|
1 |
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches" |
|
1 |
netstat -tln |
|
1 |
sudo netstat -antp | grep LISTEN | grep 22 |

|
1 2 |
netstat -an | grep 192.168.1.48:22 | grep ESTABLISHED | wc -l netstat -an | grep 192.168.1.48:22 | grep TIME_WAIT | wc -l |
|
1 |
ps -aux | grep [program] | grep -v grep |

或
|
1 |
top -p [pid] |

|
1 2 |
ps -e -o pid,comm,vsz,rss,pmem,%cpu | sort -nr -k 6 | head -n 4 ps -e -o pid,comm,vsz,rss,pmem,%cpu | sort -nr -k 5 | head -n 3 |

或通过命令
|
1 |
top |
再按P,M键来切换排序:

|
1 |
find test -mtime +30 -name "*.log" -exec rm -rf {} \; |
注:
本文所有例子在centos7上测试通过,其它系统可能略有差异。