目录
pass
文本文件
cat
查看文件内容,以及将几个文件连成一个文件
不填文件参数,默认的情况下是从标准输入中获取内容
将文件file1 file2连成file3文件:
cat file1 file2 > file3
more
最常用的就是显示输出的内容,然后根据窗口的大小进行分页显示,并且提示文件的百分比
less
对文件或其它输出进行分页显示的工具
grep
搜索内容中是否包含指定的字符串,并打印出该行
‐i ‐‐ignore‐case#忽略字符大小写的差别。
‐v #输出没有指定字符串的文件
‐c #只输出匹配行的计数。
‐R #连同子目录中所有文件一起查找。
cat a.log | grep \ 404\ |wc -l grep -v 'mmm\|nnn' abc.txt 匹配多个
cat …. | grep -v '\*\|\['
grep "211" -c access.log #-c 统计211出现行数
grep "211" -n ccess.log #输出匹配的内容和行号
awk
参考https://www.cnblogs.com/ginvip/p/6352157.html
把文件逐行的读入,默认以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理
awk -F"http" '{print $2}' access.log #指定分割关键字http
$0是原字符串,$1,$2...是分割后的内容
awk '{print $1 " is: " $4}' access.log #输出 $1 is: $4的效果
awk '{if(NR>=10 && NR<=20)print $1}' access.log #指定输出第10-20行
awk -F"[ []" '{print$1,$5}' access.log #输出时间和IP
sed
参考https://www.linuxprobe.com/linux-sed-command.html
参考https://blog.csdn.net/qq_57377057/article/details/126216920
选项
-e :直接在命令行模式上进行sed动作编辑,此为默认选项
-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-i :直接修改文件内容
-n :只打印模式匹配的行;
-r :支持扩展表达式
-h或--help:显示帮助;
-V或--version:显示版本信息。
命令
a\ 在当前行下面插入文本
i\ 在当前行上面插入文本
c\ 把选定的行改为新的文本
d 删除,删除选择的行
D 删除模板块的第一行
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区
H 追加模板块的内容到内存中的缓冲区
g 获得内存缓冲区的内容,并替代当前模板块中的文本
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面
l 列表不能打印字符的清单
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码
p 打印模板块的行。 P(大写) 打印模板块的第一行
q 退出Sed
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾
r file 从file中读行
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾
w file 写并追加模板块到file末尾
W file 写并追加模板块的第一行到file末尾
! 表示后面的命令对所有没有被选定的行发生作用
= 打印当前行号
# 把注释扩展到下一个换行符以前
元字符集
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**
\< 匹配单词的开始,如:/\
\> 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行
x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行
x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行
sed 's/puma/xx/' gitlab.rb #(默认-e)输出替换效果,默认只匹配每一行的首次出现不修改源文件
sed 's/puma/xx/g' gitlab.rb #g 替换每一行中的所有匹配
sed 's/puma/xx/3g' gitlab.rb #从第3处匹配开始替换
sed -i 's/原字符串/替换字符串/g' a.txt # -i真正的修改源文件
sed -n 's/puma/xx/p' gitlab.rb #-n选项和p命令:只打印发生替换的行
sed '/puma/d' gitlab.rb #删除含自定字符的行
sed '/^$/d gitlab.rb #删除空行
sed '3d' gitlab.rb #删除第3行
sed '/^puma/'d gitlab.rb #删除puma开头的行
sed -n '2p' access.log #输出第2行
sed '/^[a-z]/d' test.txt #删除以a-z开头的行
sed -e '/^$/{n;/^$/d}' test.txt #删除重复的空行
sed '3c abc' test.txt #将第3行替换为abc
sed 's/^/#/' test.txt #将所有行前面都加个#
sed -i.bak 's/SELINUX=disable/SELINUX=enfocing/' /etc/selinux/config #修改+备份
wc
cat a.log |wc -l
统计指定文件中的字节数、字数、行数,并将统计结果显示输出
‐c #统计字节数。
‐l #统计行数。
‐m #统计字符数。这个标志不能与 ‐c 标志一起使用。
‐w #统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
‐L #打印最长行的长度。
uniq
统计重复
-c, --count 在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated 只输出重复的行
-D, --all-repeated[=delimit-method 显示所有重复的行
delimit-method={none(default),prepend,separate}
以空行为界限
-f, --skip-fields=N 比较时跳过前N 列
-i, --ignore-case在比较的时候不区分大小写
-s, --skip-chars=N 比较时跳过前N 个字符
-u, --unique 只显示唯一的行
-z, --zero-terminated 使用'\0'作为行结束符,而不是新换行
-w, --check-chars=N 对每行第N 个字符以后的内容不作对照
sort
排序 可针对文本文件的内容,以行为单位来排序
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
uniq
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出
diff
显示两个文件差别
expand
将文件中的制表符换为空格
unexpand
将文件中的空格换为制表符
chatter
锁定文件,不能删除,不能更改
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
witch
寻找可执行文件 ,并在PATH环境变量里面寻找
locate
全盘寻找文件,文件名部分匹配,只要有包含该字符串的都罗列出来,这个指令查找速度很快
它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来更新。当我们建立好这个数据库后,就可以方便地来搜寻
od
把文件用8进制或者其他的格式显示出来,通常用于查看特殊格式文件的内容,可以用来查看不可见字符
du
计算某个目录在硬盘中所占的空间大小,默认情况下以kb为单位
-h 自动决定显示单位
-k 使用kb
-m 使用mb
df
用来统计磁盘是使用情况
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
--block-size=<区块大小> 指定区块大小
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息
--help 显示帮助信息
--version 显示版本信息
echo详细
格式
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" >>同时添加字背景颜色和文字颜色
echo -e "\033[文字颜色m字符串\033[0m" >> 仅添加文字颜色
字颜色:30—–37
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
字背景颜色范围:40—–47
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
控制选项说明
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
示例
echo -e "\033[36m '>>>>>>>>>>>>>>>>>>>>>> 提示:手动执行java -version时,需要打开新的会话,在本会话执行会报错 >>>>>>>>>>>>>>>>>>>' \033[0m"
gedit
文本编辑器
|
管道
第一个命令command1执行的结果作为command2的输入
&
后台运行
让程序在后台运行。如:cat &
磁盘
fdisk磁盘操作
-l
列出全部磁盘的分区
lsbla
-l列表显示(默认树形图显示)
输出:
NAME : 这是块设备名。
MAJ:MIN : 本栏显示主要和次要设备号。
RM : 本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
SIZE : 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
RO : 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
MOUNTPOINT : 本栏指出设备挂载的挂载点。
-s
-m
-b
状态信息显示控制
top
d 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s 安全模式,将交谈式指令取消, 避免潜在的危机
i 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n 更新的次数,完成后将会退出 top
b 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
交互
回车·或空格刷新
A切换交替显示模式
h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
数字“1”,可监控每个逻辑CPU的状况
top -b -n1
stat
查看文件的访问时间,修改时间等
ss
替代 netstat
-h, --help 显示帮助信息
-V, --version 显示指令版本信息
-n, --numeric 不解析服务名称,以数字方式显示
-r, --resolve 解析服务名称
-a, --all 显示所有的套接字
-l, --listening显示处于监听状态的套接字
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字信息
-m, --memory 显示套接字的内存使用情况
-p, --processes显示使用套接字的进程信息
-i, --info 显示内部的TCP信息
-s, --summary 显示 Sockets 摘要
-b, --bpf 显示bpf筛选器套接字信息
-E, --events
-Z, --context 上下文显示进程SELinux安全上下文
-z, --contexts 上下文显示进程和套接字SELinux安全上下文
-N, --net 切换到指定的网络命名空间名称
-4, --ipv4 只显示ipv4的套接字
-6, --ipv6 只显示ipv6的套接字
-0, --packet
-t, --tcp 只显示tcp套接字
-S, --sctp
-u, --udp 只显示udp套接字
-d, --dccp 只显示DCCP套接字
-w, --raw 仅显示RAW套接字
-x, --unix 仅显示UNIX域套接字。
--vsock
-f从文件中读取筛选器信息
-K
-H
-A
-D
-F
直接统计tcp数量监听的数量
#ss -ant | wc -l
查看所有监听端口
ss -lntp
所有处理监听状态的TCP端口,且加上程序名
ss -atnp
ss -atnp |awk '{print $4}'
显示服务器上所有的每个IP多少个连接数
ss -ntu | awk '{print $6}' | cut -d: -f1 | sort | uniq -c | sort -n
ss -nat |awk '{print $5}'|cut -d: -f1 |grep -v '\*\|\[\|A'|uniq -c|sort -r
查看80端口的syn半连接数量
ss -na |grep SYN-RECV | grep :80 | wc -l
查看各种状态数量
ss -na | awk '{print $2}'| sort|uniq -c|sort -n
显示某种连接LISTEN大于一定数目1的ip
ss -atn|grep LISTEN|awk '{print$5}'|awk -F: '{print$1}'|sort|uniq -c|sort -rn|awk '{if ($1 >1) print $2}'
ss -na|wc -l #连接数
ss -nat|wc -l #tcp连接数
ss -nat|grep ESTABLISHED|wc -l #有效连接数,中间的参数 ESTABLISHED表示有效的连接数!
ss -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}'#对tcp 各种状态的连接数分组统计结果
ss -aup查看哪些程序在使用udp
ps
Basic options:
-A :所有的进程均显示出来,与 -e 具有同样的效用;
-a 显示一个终端的所有进程,除了会话引线
a:显示现行终端机下的所有程序,包括其他用户的程序。
-d 显示所有进程,但省略所有的会话引线(utility)
-N 忽略选择。
r only running processes
T all processes on this terminal
x:显示所有程序,不以终端机来区分。
Selection by list:
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
-g gid or groupname 显示组的所有进程。
-p pid 进程使用cpu的时间
--ppid <PID> parent process id
-q, q, --quick-pid <PID>
process id (quick mode)
-s, --sid <session> session id
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
-u uid or username 选择有效的用户id或者是用户名
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
The selection options take as their argument either:
a comma-separated list e.g. '-u root,nobody' or
a blank-separated list e.g. '-p 123 4567'
Output formats:
-F extra full
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-H:显示树状结构,表示程序间的相互关系。
-j 作业格式
j BSD job control format
-l 长格式(有F,wchan,C 等字段)
l BSD long format
-M, Z add security data (for SELinux)
-O <format> preloaded with default columns
O <format> as -O, with BSD personality
-o 用户自定义格式。
user-defined format
s:采用程序信号的格式显示程序状况。
u:以用户为主的格式来显示程序状况。
v:采用虚拟内存的格式显示程序状况。
X:采用旧式的Linux i386登陆格式显示程序状况。
-y do not show flags, show rss vs. addr (used with -l)
--context display security context (for SELinux)
--headers repeat header lines, one per page
--no-headers do not print header at all
--cols, --columns, --width <num>
--rows, --lines <num>
Show threads:
H as if they were processes
-L possibly with LWP and NLWP columns
-m 显示所有的线程
-T:显示现行终端机下的所有程序。
Miscellaneous options:
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
e:列出程序时,显示每个程序所使用的环境变量。
k --sort specify sort order as: [+|-]key[,[+|-]key[,...]]
L:列出栏位的相关信息。
n:以数字来表示USER和WCHAN栏位。
S:列出程序时,包括已中断的子程序资料。
-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。
sysctl
在系统运作中查看及调整系统参数的工具
除了使用系统内置的sysctl工具操作,也可直接对/proc/sys目录下的结点直接操作。
/etc/sysctl.conf这个目录主要是配置一些系统信息,而且它的内容全部是对应于/proc/sys/这个目录的子目录及文件
ldd
ldd是list, dynamic, dependencies的缩写, 意思是, 列出动态库依赖关系
ldd $(which /usr/local/nginx/sbin/nginx)
kill
kill: 用法:kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -l [信号声明]
只有当信号被程序成功“捕获”,系统才会执行 kill 命令指定的操作;反之,如果信号被“封锁”或者“忽略”,则 kill 命令将会失效
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3 QUIT 退出。
9 KILL 杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是kill 命令的默认信号。
-l 显示所有信号
pkill
控制同名程序的所有进程
linux里面同名的进程是分主进程和子进程的
-G :仅匹配真实组ID在给定列表中的进程。
-P ppidlist : 仅匹配给定列表中PPID的进程。
-t termlist :仅匹配与给定列表中终端关联的进程。
-U uidlist :仅匹配真实的用户ID在给定列表中的进程。
-u euidlist :仅匹配有效用户ID在给定列表中的进程
-signal :指定发往每一个匹配进程的信
-x :仅认为进程其参数字符串或者执行文件名称正确匹配规定模式是匹配的进程。
pkill -f abc 杀掉含abc的所有进程
pgrep
通过程序的名字来查询进程
-l 列出程序名和进程ID;
-o 进程起始的ID;
-n 进程终止的ID;
文件目录命令
ls
ls-l 参数代表以列表的方式显示
#第一个字符d 代表这是一个目录文件。
# ‐ 代表普通文件
# c 字符设备文件
# b 块设备文件
# p 管道文件
# l 链接文件
# s socket文件
#后面的rwxr‐xr‐x字符,代表user、group、other对文件所拥有的权限,rwx代表该用户拥有读写执行的权限
ls-a
把所有的文件都罗列出来,包括隐藏文件,点号开头的在Linux中都表示隐藏文件
-R 递归
touch
将每个文件的访问及修改时间都更新为目前的时间
将每个文件的访问及修改时间都更新为目前的时间
‐a #只更新访问时间,不改变修改时间
‐c #不创建不存在的文件
‐m #只更新修改时间,不改变访问时间
‐r file #使用文件file的时间更新文件的时间
‐t #将时间修改为参数指定的日期,如:07081556代表7月8号15点56分
touch a 新建文件,或改文件时间
touch -r
cp
拷贝文件、目录
cp -r file / 递归拷贝
cp /bin?sh . ?通配符,复制多个文件到.
cp a.co{,.ba}
cp a b fi 将ab两个文件复制到fi目录
cp /a[yx]* . []*通配符复制多个文件
mv
mv /a[yx]* . []*通配符复制多个文件
ln
创建链接
一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认ln命令产生硬链接
硬链接指通过索引节点来进行链接
符号链接(Symbolic Link),也叫软链接。软链接文件有类似于Windows的快捷方式
硬链接 ln file file_hard ln [选项] 源文件 目标文件
软链接 ln ‐s file flie_soft
find
直接在全文件系统上搜寻,功能强大,速度慢
find [path] [‐option] [ ‐print ‐exec ‐ok command ] {} \;
path: #要执行查找的目录。
‐option: #查找的具体方法。
‐print: #find命令将匹配的文件输出到标准输出。
‐exec: #find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和
\;之间的空格。
‐ok: #和‐exec的作用相同,以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令
之前,都会给出提示,让用户来确定是否执行。
find / ‐name filename #在根目录里面搜索文件名为filename的文件
find /etc ‐name *s* #在目录里面搜索带有s的文件
find /etc ‐name *S #在目录里面搜索以s结尾的文件
find /etc ‐name s* #在目录里面搜索以s开头的文件
find / ‐amin ‐10 #在系统中搜索最后10分钟访问的文件
find / ‐atime ‐2 #查找在系统中最后48小时访问的文件
find / ‐mmin ‐5 #查找在系统中最后5分钟修改过的文件
find / ‐mtime ‐1 #查找在系统中最后24小时修改过的文件
find / ‐ctime ‐1 #查找在系统中最后24小时被改变状态的文件
find / ‐user username #查找在系统中属于用户username的文件
find / ‐group groupname #groupname 查找在系统中属于groupname的文件
find / ‐empty #查找在系统中为空的文件或者是文件夹
find / ‐inum 3 #查找inode号为3的文件
find / ‐type d #查找为文件类型为文件夹的文件d为文件夹
f #普通文件
d #目录文件
l #链接文件
b #块设备文件
c #字符设备文件
p #管道文件
s #socket文件
pwd
显示当前所在路径
cd
cd- 返回上次所在目录
cd~,cd 返回用户主目录
cd .. 返回当前目录上一级
cd /xxx
mkdir
创建目录,可以一次创建多个,表示连同父目录一起创建
rmdir
删除空目录,可以一次删除多个,表示连同空的父目录一起删除。
但是一旦父目录中还包含其他文件,则删除失败。
rm
rm -f fi{a,b} 强制删除fia,fib
rm -r /a 删除目录及其内容
rm -rf
tree
tree 显示当前目录目录树
tree -L 3 / 显示/下三级目录树
Listing options
-a 显示所有文件和目录,包括隐藏的
-d 只列出目录
-l 不显示符合范本样式的文件或目录名称
-f 列出每个文件的完整路径
-x
-L level 显示深度 -L 3 显示3级目录
-R
-P pattern 显示文件类型和权限
-I pattern 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
--noreport
--charset X
--filelimit #
--timefmt <f>
-o filename
--du
--prune
File options
-q
-N 直接列出文件和目录名称,包括控制字符
-Q
-p 只显示符合范本样式的文件或目录名称
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
-s 列出文件或目录大小
-h
--si
-D 打印文件最后修改时间
-F 对不同类型文件添加后缀进行区分目录添加'/',套接字文件为'=',可执行文件为'*'和“|”用于FIFO,类似于ls -F
--inodes
--device
File options
-v
-r 以相反次序排列
-t 按最后修改时间排序输出
-c
-U
--dirsfirst
Graphics options
-i 不以阶梯状列出文件或目录名称
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合
-S
-n 不在文件和目录清单加上色彩
-C 不同的颜色显示不同类型的文件
Graphics options
-X
-H baseHREF
-T string
--nolinks
---- Miscellan
--version
--help
打包压缩
gzip
压缩文件或目录,后缀gz
gzip a
gzip -l 显示压缩文件的压缩信息
gzip -d 解压并删除压缩包
bzip2
压缩文件或目录,后缀bz2
xz
压缩文件或目录,后缀gz、、xz
tar
文件目录打包
tar -cvf a.tar a 将a目录打包为a.tar
tar -zcvf a.tar.gz a 将a目录打包后压缩
tar -xvf a.tar 在当前目录解包
tar -zxvf a.tar 解压缩(调用gzip)
unzip 需安装
unzip a.zip
unzip -d /temp a.zip 解压到指定的目录下
unzip -n a.zip 不覆盖已经存在的文件
unzip -l a.zip 查看zip压缩包中包含的文件,不解压缩
unzip -t a.zip 检查zip文件是否损坏
unzip -P a.zip
zip
zip a.zip file 压缩单个文件
zip a.zip file1 file2 压缩多个文件
zip -r a.zip folder 压缩单个文件夹
zip -r a.zip folder1 folder2 压缩多个文件夹
zip -r a.zip file1 folder1 file2 压缩文件、文件夹
资源、权限、用户、密码管理
taskset
让某个程序运行在某个(或)某些CPU上。
-a, --all-tasks 在给定 pid 的所有任务(线程)上操作
-p, --pid 在存在的给定 pid 上操作
-c, --cpu-list 以列表格式显示和指定 CPU
chown 更改文件属主要,属组
-R, --recursive 递归处理所有的文件及子目录
-v, --verbose 为处理的所有文件显示诊断信息
chown -R nginx:module /usr/local/nginx
chown root /u 将 /u 的属主更改为"root"
chown root:staff /u 属主更改为"root",同时也将其属组更改为"staff"
chown 999 key
修改 mongo keyfile
chown user:group filename
chown user filename
chown :group filename
chmod 更改文件权限
-R, --recursive 以递归方式更改所有的文件及子目录
-v, --verbose 为处理的所有文件显示诊断信息
u[=,+,-][rwx] 为文件属主更改权限属性
g[=,+,-][rwx] 为文件属组更改权限属性
o[=,+,-][rwx] 为其他人更改权限属性
chmod 766 /u
给 /u 文件赋予766的权限
chmod u+x test.sh
给test.sh文件的属主增加执行权限
chmod g=rwx /u
给 /u 文件的属组赋予rwx权限
chmod 777 /u
chmod u=rwx,g=rwx,o=rwx /u
给 /u 文件配置开放全部权限
usermod
usermod -G u1 g1 将u1用户添加到g1组
useradd
useradd adduser u1
useradd -d u G g s m
useradd -u 1100 oracle 指定id,id harry 查看用户id
useradd -d /opt/mk1 mk1 指定用户主目录
useradd -g 1003 harry 指定主组
groupadd
passwd
日志
last/lastb 查看登录成功失败日志
-a 把从何处登入系统的主机名称或IP地址显示在最后一行。
-d 将IP地址转换成主机名称。
-f 指定记录文件。日志过大会切割为多个文件
位置: /var/log/wtmp,/var/log/btmp
-n <显示列数>或-<显示列数> 设置列出名单的显示列数。
-R 不显示登入系统的主机名称或IP地址。
-x 显示系统关机,重新开机,以及执行等级的改变等信息。
网络
显示网络接口信息
route
需:yum install net-tools
ip link show 显示网络接口信息
ip link set eth0 upi 开启网卡
ip link set eth0 down 关闭网卡
ip link set eth0 promisc on 开启网卡的混合模式
ip link set eth0 promisc offi 关闭网卡的混个模式
ip link set eth0 txqueuelen 1200 设置网卡队列长度
ip link set eth0 mtu 1400 设置网卡最大传输单元
ip addr show 显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0 设置eth0网卡IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0 删除eth0网卡IP地址
ip route list 查看路由信息
ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
ip route add default via 192.168.0.254 dev eth0 设置默认网关为192.168.0.254
ip route del 192.168.4.0/24 删除192.168.4.0网段的网关
ip route del default 删除默认路由
traceroute
路由追踪测试
yum install traceroute
traceroute IP地址
traceroute -n -m 5 -q 4 -w 3 www.baidu.com
ping
ping -I enp0s3 www.baidu.com 指定网卡
wget
1 GNU Wget 1.14,非交互式的网络文件下载工具。
2 用法: wget [选项]... [URL]...
3
4 长选项所必须的参数在使用短选项时也是必须的。
5
6 启动:
7 -V, --version 显示 Wget 的版本信息并退出。
8 -h, --help 打印此帮助。
9 -b, --background 启动后转入后台。
10 -e, --execute=COMMAND 运行一个“.wgetrc”风格的命令。
11
12 日志和输入文件:
13 -o, --output-file=FILE 将日志信息写入 FILE。
14 -a, --append-output=FILE 将信息添加至 FILE。
15 -d, --debug 打印大量调试信息。
16 -q, --quiet 安静模式 (无信息输出)。
17 -v, --verbose 详尽的输出 (此为默认值)。
18 -nv, --no-verbose 关闭详尽输出,但不进入安静模式。
19 --report-speed=TYPE Output bandwidth as TYPE. TYPE can be bits.
20 -i, --input-file=FILE 下载本地或外部 FILE 中的 URLs。
21 -F, --force-html 把输入文件当成 HTML 文件。
22 -B, --base=URL 解析与 URL 相关的
23 HTML 输入文件 (由 -i -F 选项指定)。
24 --config=FILE Specify config file to use.
25
26 下载:
27 -t, --tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。
28 --retry-connrefused 即使拒绝连接也是重试。
29 -O, --output-document=FILE 将文档写入 FILE。
30 -nc, --no-clobber skip downloads that would download to
31 existing files (overwriting them).
32 -c, --continue 断点续传下载文件。
33 --progress=TYPE 选择进度条类型。
34 -N, --timestamping 只获取比本地文件新的文件。
35 --no-use-server-timestamps 不用服务器上的时间戳来设置本地文件。
36 -S, --server-response 打印服务器响应。
37 --spider 不下载任何文件。
38 -T, --timeout=SECONDS 将所有超时设为 SECONDS 秒。
39 --dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒。
40 --connect-timeout=SECS 设置连接超时为 SECS 秒。
41 --read-timeout=SECS 设置读取超时为 SECS 秒。
42 -w, --wait=SECONDS 等待间隔为 SECONDS 秒。
43 --waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒。
44 --random-wait 获取多个文件时,每次随机等待间隔
45 0.5*WAIT...1.5*WAIT 秒。
46 --no-proxy 禁止使用代理。
47 -Q, --quota=NUMBER 设置获取配额为 NUMBER 字节。
48 --bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)。
49 --limit-rate=RATE 限制下载速率为 RATE。
50 --no-dns-cache 关闭 DNS 查寻缓存。
51 --restrict-file-names=OS 限定文件名中的字符为 OS 允许的字符。
52 --ignore-case 匹配文件/目录时忽略大小写。
53 -4, --inet4-only 仅连接至 IPv4 地址。
54 -6, --inet6-only 仅连接至 IPv6 地址。
55 --prefer-family=FAMILY 首先连接至指定协议的地址
56 FAMILY 为 IPv6,IPv4 或是 none。
57 --user=USER 将 ftp 和 http 的用户名均设置为 USER。
58 --password=PASS 将 ftp 和 http 的密码均设置为 PASS。
59 --ask-password 提示输入密码。
60 --no-iri 关闭 IRI 支持。
61 --local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。
62 --remote-encoding=ENC 使用 ENC 作为默认远程编码。
63 --unlink remove file before clobber.
64
65 目录:
66 -nd, --no-directories 不创建目录。
67 -x, --force-directories 强制创建目录。
68 -nH, --no-host-directories 不要创建主目录。
69 --protocol-directories 在目录中使用协议名称。
70 -P, --directory-prefix=PREFIX 以 PREFIX/... 保存文件
71 --cut-dirs=NUMBER 忽略远程目录中 NUMBER 个目录层。
72
73 HTTP 选项:
74 --http-user=USER 设置 http 用户名为 USER。
75 --http-password=PASS 设置 http 密码为 PASS。
76 --no-cache 不在服务器上缓存数据。
77 --default-page=NAME 改变默认页
78 (默认页通常是“index.html”)。
79 -E, --adjust-extension 以合适的扩展名保存 HTML/CSS 文档。
80 --ignore-length 忽略头部的‘Content-Length’区域。
81 --header=STRING 在头部插入 STRING。
82 --max-redirect 每页所允许的最大重定向。
83 --proxy-user=USER 使用 USER 作为代理用户名。
84 --proxy-password=PASS 使用 PASS 作为代理密码。
85 --referer=URL 在 HTTP 请求头包含‘Referer: URL’。
86 --save-headers 将 HTTP 头保存至文件。
87 -U, --user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。
88 --no-http-keep-alive 禁用 HTTP keep-alive (永久连接)。
89 --no-cookies 不使用 cookies。
90 --load-cookies=FILE 会话开始前从 FILE 中载入 cookies。
91 --save-cookies=FILE 会话结束后保存 cookies 至 FILE。
92 --keep-session-cookies 载入并保存会话 (非永久) cookies。
93 --post-data=STRING 使用 POST 方式;把 STRING 作为数据发送。
94 --post-file=FILE 使用 POST 方式;发送 FILE 内容。
95 --content-disposition 当选中本地文件名时
96 允许 Content-Disposition 头部 (尚在实验)。
97 --content-on-error output the received content on server errors.
98 --auth-no-challenge 发送不含服务器询问的首次等待
99 的基本 HTTP 验证信息。
100
101 HTTPS (SSL/TLS) 选项:
102 --secure-protocol=PR choose secure protocol, one of auto, SSLv2,
103 SSLv3, TLSv1, TLSv1_1 and TLSv1_2.
104 --no-check-certificate 不要验证服务器的证书。
105 --certificate=FILE 客户端证书文件。
106 --certificate-type=TYPE 客户端证书类型,PEM 或 DER。
107 --private-key=FILE 私钥文件。
108 --private-key-type=TYPE 私钥文件类型,PEM 或 DER。
109 --ca-certificate=FILE 带有一组 CA 认证的文件。
110 --ca-directory=DIR 保存 CA 认证的哈希列表的目录。
111 --random-file=FILE 带有生成 SSL PRNG 的随机数据的文件。
112 --egd-file=FILE 用于命名带有随机数据的 EGD 套接字的文件。
113
114 FTP 选项:
115 --ftp-user=USER 设置 ftp 用户名为 USER。
116 --ftp-password=PASS 设置 ftp 密码为 PASS。
117 --no-remove-listing 不要删除‘.listing’文件。
118 --no-glob 不在 FTP 文件名中使用通配符展开。
119 --no-passive-ftp 禁用“passive”传输模式。
120 --preserve-permissions 保留远程文件的权限。
121 --retr-symlinks 递归目录时,获取链接的文件 (而非目录)。
122
123 WARC options:
124 --warc-file=FILENAME save request/response data to a .warc.gz file.
125 --warc-header=STRING insert STRING into the warcinfo record.
126 --warc-max-size=NUMBER set maximum size of WARC files to NUMBER.
127 --warc-cdx write CDX index files.
128 --warc-dedup=FILENAME do not store records listed in this CDX file.
129 --no-warc-compression do not compress WARC files with GZIP.
130 --no-warc-digests do not calculate SHA1 digests.
131 --no-warc-keep-log do not store the log file in a WARC record.
132 --warc-tempdir=DIRECTORY location for temporary files created by the
133 WARC writer.
134
135 递归下载:
136 -r, --recursive 指定递归下载。
137 -l, --level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。
138 --delete-after 下载完成后删除本地文件。
139 -k, --convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。
140 --backups=N before writing file X, rotate up to N backup files.
141 -K, --backup-converted 在转换文件 X 前先将它备份为 X.orig。
142 -m, --mirror -N -r -l inf --no-remove-listing 的缩写形式。
143 -p, --page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。
144 --strict-comments 用严格方式 (SGML) 处理 HTML 注释。
145
146 递归接受/拒绝:
147 -A, --accept=LIST 逗号分隔的可接受的扩展名列表。
148 -R, --reject=LIST 逗号分隔的要拒绝的扩展名列表。
149 --accept-regex=REGEX regex matching accepted URLs.
150 --reject-regex=REGEX regex matching rejected URLs.
151 --regex-type=TYPE regex type (posix|pcre).
152 -D, --domains=LIST 逗号分隔的可接受的域列表。
153 --exclude-domains=LIST 逗号分隔的要拒绝的域列表。
154 --follow-ftp 跟踪 HTML 文档中的 FTP 链接。
155 --follow-tags=LIST 逗号分隔的跟踪的 HTML 标识列表。
156 --ignore-tags=LIST 逗号分隔的忽略的 HTML 标识列表。
157 -H, --span-hosts 递归时转向外部主机。
158 -L, --relative 只跟踪有关系的链接。
159 -I, --include-directories=LIST 允许目录的列表。
160 --trust-server-names use the name specified by the redirection
161 url last component.
162 -X, --exclude-directories=LIST 排除目录的列表。
163 -np, --no-parent 不追溯至父目录。
curl
-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]。
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com
$ curl -A '' https://google.com ##移除User-Agent标头。
也可以通过-H参数直接指定标头,更改User-Agent。
$ curl -H 'User-Agent: php/1.0' https://google.com
-b参数用来向服务器发送 Cookie。
$ curl -b 'foo=bar' https://google.com
上面命令会生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。
$ curl -b 'foo1=bar;foo2=bar2' https://google.com
上面命令发送两个 Cookie。
$ curl -b cookies.txt https://www.google.com
上面命令读取本地文件cookies.txt,里面是服务器设置的 Cookie(参见-c参数),将其发送到服务器。
-c参数将服务器设置的 Cookie 写入一个文件。
$ curl -c cookies.txt https://www.google.com
上面命令将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt。
-d参数用于发送 POST 请求的数据体。
$ curl -d'login=emma&password=123'-X POST https://google.com/login
$ curl -d 'login=emma' -d 'password=123' -X POST https://google.com/login
使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。
-d参数可以读取本地文本文件的数据,向服务器发送。
$ curl -d '@data.txt' https://google.com/login
上面命令读取data.txt文件的内容,作为数据体向服务器发送。
--data-urlencode
--data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
$ curl --data-urlencode 'comment=hello world' https://google.com/login
上面代码中,发送的数据hello world之间有一个空格,需要进行 URL 编码。
-e参数用来设置 HTTP 的标头Referer,表示请求的来源。
curl -e 'https://google.com?q=example' https://www.example.com
上面命令将Referer标头设为https://google.com?q=example。
-H参数可以通过直接添加标头Referer,达到同样效果。
curl -H 'Referer: https://google.com?q=example' https://www.example.com
-F参数用来向服务器上传二进制文件。
$ curl -F 'file=@photo.png' https://google.com/profile
上面命令会给 HTTP 请求加上标头Content-Type: multipart/form-data,然后将文件photo.png作为file字段上传。
-F参数可以指定 MIME 类型。
$ curl -F 'file=@photo.png;type=image/png' https://google.com/profile
上面命令指定 MIME 类型为image/png,否则 curl 会把 MIME 类型设为application/octet-stream。
-F参数也可以指定文件名。
$ curl -F 'file=@photo.png;filename=me.png' https://google.com/profile
上面命令中,原始文件名为photo.png,但是服务器接收到的文件名为me.png。
-G参数用来构造 URL 的查询字符串。
$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search
上面命令会发出一个 GET 请求,实际请求的 URL 为https://google.com/search?q=kitties&count=20。如果省略--G,会发出一个 POST 请求。
如果数据需要 URL 编码,可以结合--data--urlencode参数。
$ curl -G --data-urlencode 'comment=hello world' https://www.example.com
-H参数添加 HTTP 请求的标头。
$ curl -H 'Accept-Language: en-US' https://google.com
上面命令添加 HTTP 标头Accept-Language: en-US。
$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com
上面命令添加两个 HTTP 标头。
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
上面命令添加 HTTP 请求的标头是Content-Type: application/json,然后用-d参数发送 JSON 数据。
-i参数打印出服务器回应的 HTTP 标头。
$ curl -i https://www.example.com
上面命令收到服务器回应后,先输出服务器回应的标头,然后空一行,再输出网页的源码。
-I参数向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。
$ curl -I https://www.example.com
上面命令输出服务器对 HEAD 请求的回应。
--head参数等同于-I。
$ curl --head https://www.example.com
-k参数指定跳过 SSL 检测。
$ curl -k https://www.example.com
上面命令不会检查服务器的 SSL 证书是否正确。
-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。
$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet
--limit-rate
--limit-rate用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。
$ curl --limit-rate 200k https://google.com
上面命令将带宽限制在每秒 200K 字节。
-o参数将服务器的回应保存成文件,等同于wget命令。
$ curl -o example.html https://www.example.com
上面命令将www.example.com保存成example.html。
-O参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。
$ curl -O https://www.example.com/foo/bar.html
上面命令将服务器回应保存成文件,文件名为bar.html。
-s参数将不输出错误和进度信息。
$ curl -s https://www.example.com
上面命令一旦发生错误,不会显示错误信息。不发生错误的话,会正常显示运行结果。
如果想让 curl 不产生任何输出,可以使用下面的命令。
$ curl -s -o /dev/null https://google.com
-S参数指定只输出错误信息,通常与-s一起使用。
$ curl -s -o /dev/null https://google.com
上面命令没有任何输出,除非发生错误。
-u参数用来设置服务器认证的用户名和密码。
$ curl -u 'bob:12345' https://google.com/login
上面命令设置用户名为bob,密码为12345,然后将其转为 HTTP 标头Authorization: Basic Ym9iOjEyMzQ1。
curl 能够识别 URL 里面的用户名和密码。
$ curl https://bob:12345@google.com/login
上面命令能够识别 URL 里面的用户名和密码,将其转为上个例子里面的 HTTP 标头。
资源管理
ulimit
shell进程及其子进程的资源使用设置限制
-a 查看 所有限制值
-c core file size 设置core文件的最大值.单位:blocks
-d data seg size 设置一个进程的数据段的最大值.单位:kbytes
-e scheduling priority
-f file size Shell 创建文件的文件大小的最大值,单位:blocks
-i pending signals
-l max locked memory 可以锁住的物理内存的最大值
-m max memory size 可以使用的常驻内存的最大值,单位:kbytes
-n open files 每个进程可以同时打开的最大文件数
-p pipe size 设置管道的最大值,单位为block,1block=512bytes
-q POSIX message queues
-r real-time priority
-s stack size 指定堆栈的最大值:单位:kbytes
-t cpu time 指定每个进程所使用的秒数,单位:seconds
-u max user processes 可以运行的最大并发进程数
-v virtual memory Shell可使用的最大的虚拟内存,单位:kbytes
-x file locks
sync
用于数据同步,sync命令是在关闭Linux系统时使用的
这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,
sync 指令会将存于 buffer 中的资料强制写入硬盘中
taskset cpu绑定
taskset用来查看和设定“CPU亲和力”,查看或者配置进程和cpu的绑定关系,让某进程在指定的CPU核上运行
注意,此命令返回的是十六进制的,转换成二进制后,每一位对应一个逻辑CPU,低位是0号CPU,依次类推。
如果每个位置上是1,表示该进程绑定了该CPU。例如,0101就表示进程绑定在了0号和3号逻辑CPU上了
taskset -p 900 显示进程运行的CPU
掩码形式绑核
按照二进制形式,从最低位到最高位代表物理CPU的#1、#2、……、#n号核。
比如:0x00000001代表CPU的0号核,0x00000003代表CPU的0号和3号核。
注意!!!并非掩码中给出的CPU核就一定会存在,比如0x00000400理论上代表CPU的第10号核,但是该核在真正的计算机上面并不一定是存在的。
而且,如果我们试图将物理上并不存的核绑定给某个进程时,会返回错误。掩码形式的绑核命令为:
taskset -p mask pid
按CPU数直接绑核
taskset -cp cpu-list pid 或者 taskset -c cpu-list command
其中cpu-list是数字化的cpu列表,从1开始。多个不连续的cpu可用逗号连接,连续的可用短现连接,比如1,2,5-11等。
比如“taskset -c 1,3,5-9 9860”命令表示将进程9860绑定到#1、#3、#5~#9号核上面。
产生指定大小的文件
head -c 1M /dev/zero > b.txt head -c 10M /dev/zero > b.txt
truncate -s 1M b.txt
dd if=/dev/zero of=test.file bs=25MB count=1
head -c 25M /dev/zero > test.file