1 基本命令
1.1 kill-杀死进程
kill -9 $(pidof 进程命关键字)
killall 进程名
ps -ef | grep hue | awk '{print $2}' | xargs kill -9
kill -l 列出所有进程信号
1.2 ls-查看
ls -lS 按文件大小排序
ls -lh 查看文件大小和时间
ls -ltr 按时间逆序排序
1.3 ln-链接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 创建软链接
1.4 tar-压缩解压
tar -xf test.tar 解压
tar -zcvf test.tar.gz test 压缩
tar -zxvf test.tar.gz 解压
1.5 nohup
nohup sh test.sh >test.log 2>&1 重定向
1.6 scp-远程拷贝
scp /home/work/source.txt work@ip:/home/work 把本地source.txt文件拷贝到work目录
scp work@ip:/home/work/source.txt /home/work 把ip机器上的文件拷贝到本地]
1.7 ssh
- 免密
# ssh-keygen -t rsa #生成秘钥
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip #复制SSH密钥到目标主机
#window环境与linux建立互信
# ssh-copy-id -i /c/Users/boyue/.ssh/id_rsa.pub root@192.168.28.131
- ssh连接
ssh usename@ip #远程连接
ssh usename@ip "ls /home" #远程执行命令
1.8 iconv-编码格式转换
iconv -f gbk -t utf-8 file1 -o file2 格式转换gbk转换为utf-8
1.9 wc-统计
wc -lcw file 统计文件行数和字节数
命令参数:
-c 统计字节数。
-l 统计行数
-w 统计字数
1.10 export
export LANG=en_US.UTF-8 设置系统语言
1.11 echo
echo "a,b,c"|tr "," " " a b c
1.12 sed
sed -i "s/STG/ADM/g" test.txt 查找替换
sed -i s/\|/^/g file 查找替换
sed -n '1,3p' file1 查看文件1至行内容
1.1 grep
grep -in "ODS" . -R
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写
grep -l pattern files :只列出匹配的文件名
grep -L pattern files :列出不匹配的文件名
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -c number pattern files :匹配的上下文分别显示[number]行
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :对匹配到的文本着色后高亮显示
-o :是只显示匹配到的字符
-E 允许使用扩展正则表达式
1.2 find-用来在指定目录下查找文件
find path -option [ -print ] [ -exec -ok command ] {} \;
find . -ctime -20 #将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find /root/pythonWeb -name "*.py" 查看pythonWeb目录下以py为后缀名的文件
find /root/pythonWeb -name "*.py" -print print:表示将结果输出到标准输出
find . -name '[A-Z]*.txt' -print 在当前目录及子目录中,查找大写字母开头的txt文件
常用参数说明 :
mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
1.3 awk
ll|awk '{print $1,$5}' #显示ll命令执行结果每行的第一列和第五列
awk -F / '{print $2}' grade.txt #[-F指定分割符为/]
awk -F ':' '{print $2}' version.txt #[指定分割符为:]
awk '{printf"%-10s:%-d\n", $1,$5}' grade.txt #格式化输出
awk '$5==11 && $6>=90 {print $0}' grade.txt #过滤
awk '{if(NR>=20 && NR<=30) print $0}' test.txt #查看test.txt文件100行内第20到第30行的内容
cat test |awk '{sum[$2]+=$1}END{for(c in sum) print sum[c],c}' #第2列相同时,第1列相加
cat test |awk -v c="aa" '{if($2==c)print $0 }' #引入外部变量
awk 'END{print NR}' file #计算行数
1.1.1 正则表达式
awk 'BEGIN{info="this is a test";if( info ~ /test/){print "ok"}}'
字符 |
功能 |
+ |
指定如果一个或多个字符或扩展正则表达式的具体值(在 +(加号)前)在这个字符串中,则字符串匹配。命令行:awk '/smith+ern/' testfile 将包含字符 smit,后跟一个或多个 h 字符,并以字符 ern 结束的字符串的任何记录打印至标准输出。此示例中的输出是: smithern, harry smithhern, anne |
? |
指定如果零个或一个字符或扩展正则表达式的具体值(在 ?(问号)之前)在字符串中,则字符串匹配。命令行:awk '/smith?/' testfile 将包含字符 smit,后跟零个或一个 h 字符的实例的所有记录打印至标准输出。此示例中的输出是: smith, alan smithern, harry smithhern, anne smitters, alexis |
| |
指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配。命令行:awk '/allen | alan /' testfile 将包含字符串 allen 或 alan 的所有记录打印至标准输出。此示例中的输出是: smiley, allen smith, alan |
() |
在正则表达式中将字符串组合在一起。命令行:awk '/a(ll)?(nn)?e/' testfile 将具有字符串 ae 或 alle 或 anne 或 allnne 的所有记录打印至标准输出。此示例中的输出是: smiley, allen smithhern, anne |
{m} |
指定如果正好有 m 个模式的具体值位于字符串中,则字符串匹配。命令行: awk '/l{2}/' testfile 打印至标准输出 smiley, allen |
{m,} |
指定如果至少 m 个模式的具体值在字符串中,则字符串匹配。命令行: awk '/t{2,}/' testfile 打印至标准输出:
smitters, alexis |
{m,n} |
指定如果 m 和 n 之间(包含的 m 和 n)个模式的具体值在字符串中(其中m <= n),则字符串匹配。命令行: awk '/er{1, 2}/' testfile 打印至标准输出: smithern, harry smithern, anne smitters, alexis |
[String] |
指定正则表达式与方括号内 String 变量指定的任何字符匹配。命令行: awk '/sm[a-h]/' testfile 将具有 sm 后跟以字母顺序从 a 到 h 排列的任何字符的所有记录打印至标准输出。此示例的输出是: smawley, andy |
[^String] |
在 [ ](方括号)和在指定字符串开头的 ^ (插入记号) 指明正则表达式与方括号内的任何字符不匹配。这样,命令行:awk '/sm[^a-h]/' testfile 打印至标准输出: smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis |
~,!~ |
表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句。命令行:awk '$1 ~ /n/' testfile 将第一个字段包含字符 n 的所有记录打印至标准输出。此示例中的输出是: smithern, harry smithhern, anne |
^ |
指定字段或记录的开头。命令行:awk '$2 ~ /^h/' testfile 将把字符 h 作为第二个字段的第一个字符的所有记录打印至标准输出。此示例中的输出是:
smithern, harry |
$ |
指定字段或记录的末尾。命令行: awk '$2 ~ /y$/' testfile 将把字符 y 作为第二个字段的最后一个字符的所有记录打印至标准输出。此示例中的输出是:
smawley, andy smithern, harry |
. (句号) |
表示除了在空白末尾的终端换行字符以外的任何一个字符。命令行: awk '/a..e/' testfile 将具有以两个字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是: smawley, andy smiley, allen smithhern, anne |
*(星号) |
表示零个或更多的任意字符。命令行:awk '/a.*e/' testfile 将具有以零个或更多字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是: smawley, andy smiley, allen smithhern, anne smitters, alexis |
\ (反斜杠) |
转义字符。当位于在扩展正则表达式中具有特殊含义的任何字符之前时,转义字符除去该字符的任何特殊含义。例如,命令行: /a\/\// 将与模式 a // 匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。要将反斜杠本身指定为字符,则使用双反斜杠。有关反斜杠及其使用的更多信息,请参阅以下关于转义序列的内容。 |
1.1 xargs
xargs 一般是和管道一起使用。
命令格式:
somecommand |xargs -item command
-t 表示先打印命令,然后再执行
-d delim 分隔符,默认的分隔符是回车,argument的分隔符是空格
-x exit的意思,主要是配合-s使用
-P 修改最大的进程数,默认是1
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数
l find /sbin -perm +700 |xargs ls -l
l echo "nameXnameXnameXname" | xargs -dX # -d 选项可以自定义一个定界符
name name name name
l echo "h e l l o"|xargs -n3 # -n 选项多行输出
l echo "a b c" | xargs -n1 | xargs -I {} ls
xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:
l 复制所有图片文件到 /data/images 目录下:
ls *.jpg | xargs -n1 -I {} cp {} /data/images
l 用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题
find . -type f -name "*.log" -print0 | xargs -0 rm -f
l xargs -0 将 \0 作为定界符。统计一个源代码目录中所有 php 文件的行数
find . -type f -name "*.php" -print0 | xargs -0 wc -l
l 查找所有的 jpg 文件,并且压缩它们
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
1.2 ss
ss -antl 查看所有的tcp连接并且状态为LISTEN的连接
1.3 ps
ps -aux
-a:显示所有用户的进程;
-u:显示用户名和启动时间;
-x:显示没有控制终端的进程;
ps -ef|grep python3
1.4 netstat-显示各种网络相关信息
netstat -nl | grep 9090 查看9090端口是否启用
netstat -apn|grep 80
netstat -a 列出所有端口
netstat -at 列出所有 tcp 端口
netstat -l 只显示监听端口
netstat -lt # 显示监听TCP端口
netstat -lu # 显示监听UDP端口
netstat -lx # 显示监听UNIX端口
1.5 top-实时查看进程
top: 实时查看进程 ,q退出查看
top -d 3 3秒刷新一次
top -c 显示整个命令而不仅只是显示命令名
top -n 1
1.6 查看cpu信息
cat /proc/cpuinfo | grep name | sort | uniq #查看CPU型号
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l # 查看物理CPU数目
cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l # 查看CPU核数
cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l #查看CPU线程数
lscpu # 获取CPU信息
1.7 whereis-执行文件路径的命令
whereis python3 查看python3所属路径
python3: /usr/bin/python3 /usr/local/python3
1.8 which-执行文件路径的命令
which python3
/usr/bin/python3
which 查找的可执行文件,必须是要在 PATH 下的可执行文件,而不能是没有加入 PATH 的可执行文件,即使他就是可执行文件,但是没有加入到系统搜索路径
1.9 readlink
readlink -f file.txt 读取文件的绝对路径
1.10 tail
tail -f file 实时查看文件内容
tail -n 5 file 查看文件最后5行内容
1.11 tee
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件
echo "hello" |tee file1 file2 #使用指令"tee"将用户输入的数据同时保存到文件"file1"和"file2"
1.12 shuf-随机选择器
shuf train.txt -o test.txt -n 30 #从train.txt文件中随机读取30行文本输出到test.txt
1.13 split-用于分割文件
split -6 README #将README文件每六行分割成一个文件
1.14 test-检查某个条件是否成立
数值测试 |
|
-eq |
等于则为真 |
-ne |
不等于则为真 |
-gt |
大于则为真 |
-ge |
大于等于则为真 |
-lt |
小于则为真 |
-le |
小于等于则为真 |
字符串测试 |
|
= |
等于则为真 |
!= |
不相等则为真 |
-z 字符串 |
字符串的长度为零则为真 |
-n 字符串 |
字符串的长度不为零则为真 |
文件测试 |
|
-e 文件名 |
如果文件存在则为真 |
-r 文件名 |
如果文件存在且可读则为真 |
-w 文件名 |
如果文件存在且可写则为真 |
-x 文件名 |
如果文件存在且可执行则为真 |
-s 文件名 |
如果文件存在且至少有一个字符则为真 |
-d 文件名 |
如果文件存在且为目录则为真 |
-f 文件名 |
如果文件存在且为普通文件则为真 |
-c 文件名 |
如果文件存在且为字符型特殊文件则为真 |
-b 文件名 |
如果文件存在且为块特殊文件则为真 |
1.15 sar-查看网速
sar -n DEV 1 1 #查看网速
1.16 crontab-添加定时任务
- 为hadoop新用户添加crontab命令:
vim /etc/cron.allow 【root】
hadoop
- cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:
crontab –e #修改 crontab 文件,如果文件不存在会自动创建。
crontab –l #显示 crontab 文件。
crontab -r #删除 crontab 文件。
crontab -ir #删除 crontab 文件前提醒用户
- 除了数字还有几个特殊的符号:"*"、"/"和"-"、","
* 代表所有的取值范围内的数字
"/" 代表每的意思,"/5"表示每5个单位
"-" 代表从某个数字到某个数字
"," 分开几个离散的数字
实例 |
描述 |
0 6-12/3 * 12 * /usr/bin/backup |
在12月内,每天的早上6点到12点,每隔3个小时0分钟执行一次/usr/bin/backup |
0 */2 * * * /sbin/service httpd restart |
每两个小时重启一次apache |
50 7 * * * /sbin/service sshd start |
每天7:50开启ssh服务 |
50 22 * * * /sbin/service sshd stop |
每天22:50关闭ssh服务 |
0 0 1,15 * * fsck /home |
每月1号和15号检查/home 磁盘 |
1 * * * * /home/bruce/backup |
每小时01分执行 /home/bruce/backup这个文件 |
- 批量添加定时任务
pssh -h hosts.txt -i 'cd ~ && crontab -l > cron.cron && echo "* * * * * echo hello >>/home/hadoop/time.log" >> cron.cron && crontab cron.cron '
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统