1、cat命令练习
基本功能
-
功能:连接文件并输出其内容到标准输出。常用于查看文件、合并文件、重定向输出。
常用选项
-
-n:显示行号。
-
-b:显示非空行的行号。
-
-E:显示每行的结束符$,用于标识行尾。
-
-T:显示制表(tab)为^I,用于可视化tab字符。
-
-s:合并连续的空行,只保留一个空行。
-
-v:显示非打印字符
-
-A:组合选项-vET的效果,显示非打印字符,每行末尾添加$符号,并将 tab 显示为 ^I
练习步骤
#使用 cat 查看文件内容
cat example.txt
#将多个文件内容合并输出
cat file1.txt file2.txt
#显示行号
cat -n example.txt
#显示非空行的行号
cat -b example.txt
#合并连续的空行为1行
cat -s examp.txt
#显示非打印字符
cat -v file.txt
#显示行尾符号
cat -E example.txt
#显示制表符为 ^I
cat -T examp.txt
#-A组合效果 -vET
cat -A examp.txt
2、tac命令练习
基本功能
-
功能:逆序输出文件的内容,tac是cat的反向命令
练习步骤
#逆序显示文件的内容
tac example.txt
#反向显示当前目录下所有文件内容
tac *
3、head命令练习文档
基本功能
-
功能:输出文件的前几行或前几个字节。常用于查看文件的前部分内容。
常用选项:
-
-n <行数>:指定要输出的行数,默认是10行。
-
-c <字节数>:按字节输出文件的前部分。
-
-q:禁止显示每个文件的文件名(当输入多个文件时)。
-
-v:始终显示每个文件的文件名。
练习步骤
#显示文件的前10行(默认)
head file.txt
#显示文件的前5行
head -n 5 file.txt
#显示文件的前100个字节
head -c 100 file.txt
#不显示文件名的标题信息
head -q file.txt
#显示文件名的标题信息
head -v file.txt
4、split命令练习
基本功能
-
功能:将文件分割为指定大小或行数的多个小文件
常用选项
-
-l <行数>:根据行数进行分割
-
-b <字节数>:根据字节大小进行分割
-
-d:使用数字后缀而不是字母后缀
-
--verbose:显示拆分过程信息
练习步骤
#将largefile.txt文件拆分为每个1MB大小的块,并以output为前缀生成多个输出文件
split -b 1M largfile.txt output
#将largefile.txt文件拆分为每个1000行的块,并以output为前缀生成多个输出文件
split -l 1000 largfile.txt output
#将largefile.txt文件拆分为每个50MB大小的块,并以数字作为后缀生成多个输出文件
split -b 50M -d largfile.txt output
#将largefile.txt文件拆分为每个2000行的块,并以output为前缀生成多个输出文件,同时显示拆分过程的详细信息
split -l 2000 --verbose largfile.txt output
#将largefile.txt⽂件拆分为每个100MB⼤⼩的块,并将输出⽂件保存在指定⽬录下,输出⽂件名为output为前缀
split -b 100M largefile.txt /path/to/output/output
5、wc命令练习
基本功能
-
功能:统计文件的行数、单词数和字符数。可以同时统计多个文件的总计数。
常用选项
-
-l:仅统计行数。
-
-w:仅统计单词数。
-
-c:仅统计字节数。
-
-m:仅统计字符数
练习步骤
#file.txt的行数、字数、字节数
wc file.txt
#只统计文件file.txt的字节数
wc -c file.txt
#只统计文件file.txt的字数
wc -w file.txt
#只统计文件file.txt的行数
wc -l file.txt
#只统计文件file.txt的字符数
wc -m file.txt
#统计多个文件 file1.txt file2.txt的总字节数、字数、行数
wc file1.txt file2.txt
6、sum命令练习
基本功能
-
功能:计算文件的校验和以及文件的块数。常用于简单的校验和操作。
常用选项
-
-r:使用 BSD 校验和算法(默认),使用 1K 的块。
-
-s:使用 System V 校验和算法,使用 512 字节的块。
练习步骤
#test.sh校验码和块数
sum test.sh
#使用BSD加和算法计算文件test.sh校验码和块数
sum -r test.sh
#使用System V 加和算法计算文件 test.sh校验和块数
sum -s test.sh
7、md5sum命令练习
基本功能
-
功能:生成文件的 MD5 哈希值,用于校验文件完整性。MD5 是常用的哈希算法之一。
常用选项
-
-c
: 检查文件的 MD5 哈希值是否与指定文件中的哈希值匹配。
练习步骤
#验证文件file1 file2的正确性
md5sum file1 file2 > file_sum.md5
#查看一个字符串 hello world 的md5值
echo -n "hello world" | md5sum
#计算名为example.txt的文件的MD5的哈希值
md5sum example.txt
#计算目录 /home/use/document/ 下所有文件的MD5哈希值
md5sum /home/use/document/*
#校验文件是否发生变化:
#先生成校验文件
md5sum a.txt > md5.log
#校验文件是否发生改变
md5sum -c md5.log
8、sha1sum命令
基本功能
-
功能:生成文件的 SHA-1 哈希值。SHA-1 是一种更安全的哈希算法,常用于文件完整性校验。
常用选项
-
-c
: 检查文件的 SHA-1 哈希值是否与指定文件中的哈希值匹配。
练习步骤
#生成一个文件的校验和
sha1sum file
#校验字符串
echo "hello world" | sha1sum
#校验多个文件
sha1sum test1.txt test2.txt
9、sort命令
基本功能
-
功能:对文本文件中的行进行排序,支持按数字、字母、日期等方式排序。
常用选项
-
-n
: 按数值排序,而不是默认的字典序。 -
-r
: 逆序排序。 -
-k
: 指定按照某个字段进行排序(默认是整个行)。 -
-t
: 指定字段分隔符(默认是空格或制表符)。 -
-m:归并已排序的文件;不进行排序。
-
-u
: 去重,即移除重复的行(保留一行)。
练习步骤
#按字母顺序对文件file.txt中的每一位进行排序,并将排序结果输出到标准输出
sort file.txt
#按字母顺序对文件file.txt中的每一位进行降序排序,并将结果输出到标准输出
sort -r file.txt
#将按数值⼤⼩对⽂件nnumbers.txt中的每⼀位进⾏排序,并将结果输出到标准输出。数字将按照升序排序
sort -n numbers.txt
#将按照逗号作为字段分隔符,对⽂件file.csv中的第⼆个字段进⾏排序,并将结果输出到标准输出
sort -t ',' -k 2 file.csv
#对⽂件file.txt中的每⼀位进⾏排序,并将结果输出到标准输出。重复的⾏将被去除,只保留⼀个副本。
sort -u file.txt
#对照grades.txt⽂件中的第三个字段进⾏数值排序,并将结果输出到标准输出
sort -k 3,3 -n grades.txt
#将对file1.txt和file2.txt中的内容进⾏排序,并将结果输出到标准输出
sort -m file1.txt file2.txt
10、uniq命令
基本功能
-
功能:删除或标记文件中相邻的重复行。注意uniq只能去除相邻的重复行,因此通常与sort搭配使用。
常用选项
-
-d
: 只输出重复的行。
练习步骤
#删除文件data.txt连续重复的行,并输出唯一行到标准输出
uniq data.txt
#统计文件numbers.txt每个重复行的数量,并将结果输出标准输出
uniq -c numbers.txt
#删除文件sorted.txt 中重复行(注意重复行非连续)
sort sorted.txt | uniq
11、comm命令
基本功能
-
功能:比较两个已排序的文件,并输出三个列:文件 1 的独有行、文件 2 的独有行、两个文件共有的行。
常用选项
-
-1
: 不显示文件 1 的独有行。 -
-2
: 不显示文件 2 的独有行。 -
-3
: 不显示共有的行。 -
--output-delimiter=字符串 使用 <字符串> 分隔各列
-
-z, --zero-terminated 以 NUL 空字符而非换行符作为行分隔符
练习步骤
#比较2个已排序的文件 file1.txt file2.txt ,并输出他们的交集、差集、并集
comm file1.txt file2.txt
#⽐较2个已排序的⽂件 file1.txt file2.txt,并输出仅在第⼀个⽂件中独有的⾏
comm -2 -3 file1.txt file2.txt
#⽐较2个已排序的⽂件file1.txt file2.txt,并输出仅在第⼆个⽂件中独有的⾏
comm -1 -3 file1.txt file2.txt
#⽐较2个已排序的⽂件 file1.txt file2.txt,并忽略⼤⼩写进⾏⽐较
comm -i file1.txt file2.txt
#⽐较2个已排序的⽂件 file1.txt file2.txt,并输出以制表符作为字段之间的分隔符
comm -3 --output-delimiter=$'\t' file1.txt file2.txt
#⽐较2个已排序的⽂件 file1.txt file2.txt, 并以空字符作为⾏分隔符
comm -z file1.txt file2.txt
12、cut命令
基本功能
- 功能:用于提取文本文件中的指定列或字段。可以根据字符位置、字节或分隔符来提取数据。
常用选项
-
-b
: 按字节提取。 -
-c
: 按字符提取。 -
-f
: 按字段提取(与-d
配合使用)。 -
-d
: 指定字段分隔符(默认是制表符)。 -
--complement
: 提取除指定字段或字符以外的所有内容。 -
-s, --only-delimited 打印包含分隔符的行
练习步骤
#从file.txt⽂件中提取第1到5个字符和第10个字符,并将结果输出
cut -c 1-5,10 file.txt
#从冒号分隔符filt.txt⽂件中提取第1到第3个字段,并且仅输出包含冒号的⾏
cut -f 1-3 -s -d ':' file.txt
#从file.txt⽂件中提取第1到第3个字段之外的所有字段,并将结果输出
cut -f 1-3 --complement file.txt
#从file.txt⽂件中提取第1到第10个字节和第20到第30个字节,并将结果输出
cut -b 1-10,20-30 file.txt
#从file.txt⽂件中提取第2个字段的最后⼀个字符,并将结果输出
cut -f 2 -d ' ' file.txt | rev | cut -c 1
#打印⽂本⽂件file.txt每⾏的第3个单词
cut -f 3 -d' ' file.txt
13、paste命令
基本功能
-
功能:将多个文件的行合并到一起,或者将同一文件的内容按行拼接。默认使用制表符作为分隔符。
常用选项
-
-d
: 指定字段分隔符(默认是制表符)。 -
-s
: 将文件内容横向拼接,而不是按行拼接。
练习步骤
#将相同⾏号的⾏为合并为⼀⾏,合并⽂本⽂件file1.txt和file2.txt
paste file1.txt file2.txt
#使⽤逗号作为分隔符合并2个⽂件(flle1.txt和file2.txt)的内容输出
paste -d ',' file1.txt file2.txt
#将2个⽂件(flle1.txt和file2.txt)的内容合并成⼀⾏输出
paste -s file1.txt file2.txt
#将多个⽂件(flle1.txt、file2.txt和file3.txt)的内容按列合并输出,并且使⽤制表符和逗号交替作为分隔符
paste -d '\t,' file1.txt file2.txt file3.txt
14、join命令
基本功能
-
功能: 用于基于指定字段合并两个文件,类似于数据库中的表连接操作。要求两个文件按照用于连接的字段排序。
常用选项
-
-1 <字段号>
: 指定第一个文件的用于连接的字段(默认是第一个字段)。 -
-2 <字段号>
: 指定第二个文件的用于连接的字段(默认是第一个字段)。 -
-t <分隔符>
: 指定字段分隔符(默认是空格或制表符)。 -
-o
: 定义输出格式,可以指定要输出的字段。 -
-v 1
: 只显示第一个文件中未匹配的行。 -
-v 2
: 只显示第二个文件中未匹配的行。 -
-a 文件编号 也打印文件 <文件编号> 中无法匹配的行。 <文件编号> 的值可以是 1 或 2,分别对应 <文件1> 和 <文件2>。
练习步骤
#按第⼀个域(field)合并已排序⽂本⽂件file1.txt和file2.txt
join file1.txt file2.txt
#打印已排序⽂本⽂件file1.txt和file2.txt所有匹配和⾮匹配的⾏
join -a1 -a2 file1.txt file2.txt
#打印已排序⽂本⽂件file1.txt和file2.txt中file1.txt独有的⾏
join -v1 file1.txt file2.txt
15、tr命令
基本功能
-
功能:
tr
用于替换、删除或压缩重复的字符。它从标准输入读取数据,并将结果输出到标准输出。
常用选项
-
-d
: 删除指定的字符。 -
-s
: 压缩重复的字符为单个字符。 -
-c
: 用补集操作(即匹配除指定字符外的所有字符)。 -
-t
: 截断第一组字符以适应第二组的长度。
练习步骤
#将输⼊⽂件input.txt中的⼩写字⺟转换为⼤写字⺟,并将结果输出到标准输出流
tr 'a-z' 'A-Z' < input.txt
#将输⼊⽂件input.txt中的所有数字字符删除,并将结果输出到output.txt⽂件
tr -d '0-9' < input.txt > output.txt
#将输⼊⽂件input.txt中的多个连续换⾏符压缩为⼀个换⾏符,并将结果输出到标准输出流
tr -s '\n' < input.txt
#将输⼊⽂件input.txt中的所有标点符合删除,并将结果输出到标准输出流
tr-d '[:punct:]' < input.txt
16、cp和mv命令
基本功能
-
功能:
cp
用于复制文件或目录,mv
用于移动文件或目录(也可用于重命名文件)。
常用选项(cp
)
-
-r
: 递归复制目录。 -
-v
: 显示复制过程。 -
-i
: 覆盖文件前提示用户确认。 -
-p
: 保留文件的属性(如时间戳、权限等)。
常用选项(mv
)
-
-v
: 显示移动或重命名过程。 -
-i
: 移动或重命名前提示用户确认。 -
-n
: 不覆盖目标文件。
练习步骤
#将file1.txt复制为file2.txt,如果file2.txt已存在,则会提⽰是否覆盖
cp -i file1.txt file2.txt
#⼀条命令拷⻉⽂件file1.txt⾄⽂件file2.txt,仅当前者新于后者或者后者不存在时
cp -u file1.txt file2.txt
#拷⻉⽬录file1⾄file2
cp -r file1 file2
#保留每个⽂件或者⽬录所在属性的拷⻉⽬录foo⾄bar
cp -a foo bar
#⼀条命令移动⽂件file⾄⽂件file2,仅当前者新于后者或者后者不存在时
mv -u file file2
#⼀条命令移动⽂件file1⾄file2,仅当前者新于后者或者后者不存在时
mv -n file1 file2
#将⽬录dir1移动到⽬录dir2下,并将⽬标位置存放在同名⽬录时强制覆盖
mv -f dir1 dir2
#将⽂件file.txt移动到⽬录/home/user/documents/下,并在⽬标位置存在同名⽂件时进⾏交互确认
mv -i file.txt /home/user/documents/
#在当前⽬录下,⼀条命令将a和b移动⾄⽬录/foo/bar中
mv a b /foo/bar
17、dd命令
基本功能
-
功能:
dd
用于按块复制文件,常用于备份、恢复和创建磁盘映像。
常用选项
-
if=<输入文件>
: 指定输入文件。 -
of=<输出文件>
: 指定输出文件。 -
bs=<大小>
: 指定块大小(默认为512字节)。 -
count=<数目>
: 指定要复制的块数。 -
status=progress
: 显示复制进度。 -
skip:跳过输入的 bs数量。
-
seek:跳过输出文件的前 bs数量
练习步骤
#复制块设备/dev/sda⾸2048个扇区⾄⽂件bar,每个扇区512字节
dd if=/dev/sda bs=512 count=2048 of=bar
#复制dev/sda设备的内容到/path/to/image.img⽂件中,创建⼀个设备的镜像⽂件
dd if=/dev/sda of=/path/to/image.img
#跳过/dev/sda设备中前10个1MB的数据,然后读取接下来的100个1MB的数据,并将其丢弃,相当于只读取/dev/sda设备中的部分数据
dd if=/dev/sda bs=1M count=100 skip=10 of=/dev/null
#将/source.img⽂件中的内容从偏移量为10MB的位置开始复制到/dev/sda设备中
dd if=/source.img bs=1M skip=10 of=/dev/sda
18、install命令
基本功能
-
功能:
install
命令用于将文件复制到目标位置并设置属性,常用于安装程序和脚本。
常用选项
-
-d
: 创建目标目录。 -
-m
: 设置文件的权限(类似chmod
)。 -
-o
: 设置文件的所有者。 -
-g
: 设置文件的所属组。 -
-v
: 显示安装过程的详细信息。 -
-D
:选项会自动创建所需的目录(a/b/c
),如果它们还不存在。
练习步骤
#⼀条命令创建⽬录a/b/c,并拷⻉⽂件file⾄其中
install -D file a/b/c/file
#当前⽤⼾为root,按属主可读、可写和可⼿上,并同组和其他⽤⼾可读、可写和可搜索,属主为nobody,组名为nogroup,⼀条命令创建⽬录a/b/c
install -d -m 755 -o nobody -g nogroup a/b/c
#将file.txt复制到/tmp⽬录,并将权限设置为rwxr-xr-x
install -m 755 file.txt /tmp
#将file.txt复制到/tmp⽬录中,并创建备份⽂件
install --backup file.txt /tmp
#创建⼀个符合链接⽂件link_to_file.txt,并执⾏file.txt
install -s file.txt link_to_file.txt
19、ln
、link
和 readlink
命令
基本功能
-
ln
: 创建硬链接或符号链接(软链接)。 -
link
: 创建硬链接。 -
readlink
: 显示符号链接指向的目标。
常用选项(ln
)
-
-s
: 创建符号链接(软链接)。 -
-f
: 强制删除已存在的目标链接。 -
-v
: 显示链接创建过程。 -
-r, --relative 和 -s 同时使用时,创建相对于链接位置的链接
练习步骤
#创建file的相对于⽬录/a/b路径的软链接,仅当/a/b/file不存在
ln -sr file /a/b
#创建foo的硬链接bar
ln foo bar
#创建foo的软链接bar,仅当bar不存在
ln -s foo bar
#创建foo的软链接bar,仅当bar存在
ln -sf foo bar
#解析符合链接abc指向的路径
readlink abc
20、ls命令
基本功能
-
功能: 列出目录内容(文件和子目录)。
常用选项
-
-l
: 详细列表模式,显示文件权限、大小、所有者等。 -
-a
: 显示隐藏文件(以.
开头的文件)。 -
-h
: 以人类可读的格式显示文件大小(如 KB、MB 等)。 -
-t
: 按修改时间排序。 -
-r
: 逆序排列(可与其他选项组合使用)。 -
-R
: 递归列出子目录内容。 -
-d, --directory 列出目录本身,而不是目录的内容
-
-S 根据文件大小排序,最大的最前
练习步骤
#仅列⽬录/a/b/c,不列表其中内容
ls -d /a/b/c
#按照⽂件⼤⼩的降序显⽰当前⽬录下的所有⽂件和⼦⽬录
ls -S
#显⽰当前⽬录下的所有⽂件和⼦⽬录,并包括隐藏⽂件
ls -a
#显⽰当前⽬录下的所有⽂件和⼦⽬录,并使⽤⼈类可读的格式显⽰⽂件⼤⼩
ls -lh
#按照最后修改时间的降序显⽰当前⽬录下的所有⽂件和⼦⽬录
ls -t
21、mkdir
和 rmdir
命令练习文档
基本功能
-
功能:
mkdir
用于创建新目录,rmdir
用于删除空目录。
常用选项
-
-p
: 递归创建目录(mkdir
)。 -
-v
: 显示每个创建或删除的目录信息。 -
-m, --mode=模式 设置文件模式(格式同 chmod),而不是 a=rwx - umask
练习步骤
#假设⽬录/a/b/c和其祖先⽬录都不存在(/除外),按仅属主可读、可写和可搜索,并同组⽤⼾可读、可写和可搜索,⼀条命令创建该⽬录
mkdir -p -m 770 /a/b/c
#创建⼀个⽬录,并设置其权限未777
mkdir -m 777 mydir
#创建⼀个⽬录,并将其所属的⽤⼾组设置为“staff”
mkdir mydir && chgrp staff mydir
#在当前⽬录下递归地创建⼀个名为"dir1/dir2/dir3"的⽬录
rmdir -p dir1/dir2/dir3
#在当前⽬录下,⼀条命令删除a/b/c及其⽗⽬录,仅当他们为空⽬录时
rmdir -p a/b/c
#将⼯作⽬录下名为www的⼦⽬录删除
rmdir www
22、mkfifo\mknod\pwd命令
基本功能(mkfifo)
-
功能: 创建命名管道(FIFO),允许进程间的有序通信。
常用选项
-
-m
: 设置创建管道的权限(类似chmod
)。 -
-v
: 显示创建管道的详细信息。
基本功能(mknod)
-
功能: 创建特殊文件(块设备或字符设备)。
常用选项
-
b
: 创建块设备文件。 -
c
: 创建字符设备文件。 -
p
: 创建命名管道(与mkfifo
类似)。 -
-m
: 设置文件的权限(类似chmod
)。
练习步骤
#创建有名管道 /tmp/fifo
mkfifo /tmp/fifo
#创建⼀个名为mypipe的有名管道,并将其权限设置为0644
mkfifo -m 0644 mypipe
#创建字符设备/dev/console2,并设置权限未660(⽤⼾可租都可读写)。主设备号为100,次设备号为2
mknod -m 660 /dev/console2 -c 100 2
#打印当前⽬录
pwd
#存储当前⽬录的shell变量
$PWD
23、rm命令
基本功能
-
功能: 删除文件和目录。
常用选项
-
-r
: 递归删除目录及其内容。 -
-f
: 强制删除,不提示确认(即使文件不存在也不会报错)。 -
-i
: 删除前提示用户确认。 -
-v
: 显示删除过程中的详细信息。
练习步骤
#删除⽬录directory及其内容
rm -r directory
#强制递归删除⽬录abc
rm -rf abc
#⼀条命令删除⽬录/ab/c/file下修改时间超过1天的⽂件/⽬录
find /ab/c/file -mtime +1 -exec rm -rf {} \;
#删除以特定后缀(.txt)结尾的⽂件
rm *.txt
24、chown
和 chgrp
命令
基本功能
-
功能:
-
chown
用于改变文件或目录的所有者和所属组。 -
chgrp
用于改变文件或目录的所属组。
-
常用选项
-
chown <所有者>:<组> <文件>
: 改变文件的所有者和组。 -
chown <所有者> <文件>
: 只改变文件的所有者。 -
chown :<组> <文件>
: 只改变文件的组(等同于chgrp
)。 -
-R
: 递归更改目录及其下所有文件和子目录的所有权或组。 -
-v
: 显示每次所有权更改的详细信息。 -
--reference=<参考文件>
: 使文件的所有者和组与参考文件相同。
练习步骤
#当前⽤⼾为root,将myfile.txt的所有者更改为⽤⼾名为username的⽤⼾,并且将所属组ID更改为‘1001’
chown username:1001 myfile.txt
#当前⽤⼾为root,⼀条命令修改⽬录a/b/c及其内容的属主为nobody ,组名为nogoup
chown -R nobody:nogoup a/b/c
#当前⽤⼾为root,修改⽬录a/b/c及其内容的组名为nogroup
chgrp -R nogroup a/b/c
#当前⽤⼾为root,同时修改多个⽬录和⽂件('dir1/','dir2/',和'file1.txt')的群组为'developers'
chgrp developers dir1/ dir2/ file1.txt
25、chmod命令
基本功能
-
功能:
chmod
用于改变文件或目录的访问权限。
常用选项
-
u/g/o
: 代表文件的用户(u)、组(g)和其他用户(o)。 -
+/-/=
: 用于设置权限,+
表示增加权限,-
表示移除权限,=
表示设定精确的权限。 -
rwx
: 分别代表读(r)、写(w)和执行(x)权限。 -
-R
: 递归更改目录及其下所有文件的权限。 -
-v
: 显示每次权限更改的详细信息。
练习步骤
#将⽬录a/b/c下所有⽬录和可执⾏⽂件加同组,可搜索/可执⾏
chmod -R g+x a/b/c
#按同组和其他⽤⼾不可读、不可写和不可搜索\不可执⾏ 修改⽬录a/b/c及其内容的组名为nogoup
chmod -R og-rwx a/b/c
#删除⽂件foo对于其他⽤⼾(⾮所有者,⾮⽤⼾组成员)的所有访问权
chmod o-rwx foo
26、touch命令
基本功能
-
功能:
touch
用于更新文件的时间戳或创建新文件。
常用选项
-
-a
: 只更新访问时间。 -
-m
: 只更新修改时间。 -
-t
: 设置指定的时间戳(格式为[[CC]YY]MMDDhhmm[.ss]
)。 -
-r <参考文件>
: 使用参考文件的时间戳更新目标文件。 -
-c
: 如果文件不存在,则不创建文件。
练习步骤
#据⽂件source.txt时间戳,修改target.txt的时间戳
touch -r source.txt target.txt
#只更新file.txt⽂件的修改时间戳
touch -m file.txt
#只更新file.txt⽂件的访问时间戳
touch -a file.txt
27、basename
和 dirname
命令
基本功能
-
功能:
-
basename
用于去除文件路径,返回文件名或去除文件扩展名。 -
dirname
用于返回路径中目录部分。
-
常用选项
-
basename
:-
basename <路径>
: 返回路径中的文件名部分。 -
basename <路径> <后缀>
: 去除文件名中的后缀。 -
-a
: 支持多个路径参数。
-
-
dirname
:-
dirname <路径>
: 返回路径中的目录部分。
-
练习步骤
#消除⽂件/usr/include/stdio.h的⽬录和扩展名
basename /usr/include/stdio.h .h
#消除⽂件dir1/file1的⽬录
basename /dir1/file1
#⼀次性消除多个⽂件/etc/passwd和/etc/shadow的⽬录
basename -a /etc/passwd /etc/shadow
#获取多个⽬录下(dir1/file1和dir2/file2)的⽂件列表,以换⾏符\为分隔
basename -a dir1/file1 dir2/file2
#消除⽂件dir1/file1的基本⽂件名
dirname dir1/file1
28、mktemp
命令
基本功能
-
功能:
mktemp
用于创建临时文件或目录,并确保名称是唯一的。
常用选项
-
-d
: 创建临时目录。 -
-t
: 使用指定的模板创建临时文件或目录(如果不提供,默认会生成文件名)。 -
-p <目录>
: 在指定的目录下创建临时文件或目录。 -
-u
: 创建并显示临时文件名,但不创建文件(不推荐使用,可能导致安全风险)。
练习步骤
#创建临时⽬录
mktemp -d
#在特定⽬录/home/user中创建临时⽂件
mktemp -p /home/user
#创建⼀个只有⽂件名的临时⽂件
mktemp -u
#创建⼀个临时⽂件
mktemp
#创建⼀个临时⽬录,并且在⽬录名中添加指定的后缀(.temp)
mktemp -d -s .temp
29、realpath命令
基本功能
-
功能:
realpath
命令用于显示文件或目录的绝对路径,并解析所有符号链接、相对路径和.
/..
符号。
常用选项
-
--relative-to=<路径>
: 输出相对于指定路径的相对路径。 -
--relative-base=<路径>
: 计算相对路径时的基础路径。 -
--canonicalize
: 解析路径中的符号链接、.
和..
,并输出标准路径。 -
-s
: 只处理符号链接,而不检查文件是否存在。 -
-m
: 忽略不存在的路径并解析。
练习步骤
#解析⽂件file1的全路径
realpath file1
30、df
命令
基本功能
-
功能:
df
用于显示文件系统的磁盘使用情况,包括已用空间、可用空间以及文件系统类型等。
常用选项
-
-h
: 以人类可读的格式显示(如 KB、MB、GB)。 -
-T
: 显示文件系统的类型。 -
-i
: 显示 inode 使用情况,而不是磁盘空间。 -
-a
: 显示所有文件系统,包括 0 大小的伪文件系统(如/proc
)。 -
--total
: 显示所有文件系统使用情况的总计值。
练习步骤
#⼀条命令打印⽬录/boot的挂载设备
df /boot
#打印各⽂件系统inode使⽤情况
df -i
#打印各⽂件系统的空间使⽤情况,且包含⽂件系统类型
df -T
#显⽰所有⽂件系统的磁盘空间使⽤情况,包括系统保留的⽂件系统
df -a
#显⽰指定设备(/dev/sda1)的⽂件系统的磁盘空间使⽤情况,以⼈类可读的⽅式显⽰,并且显⽰⽂件系统类型
df -hT /dev/sda1
31、du命令
基本功能
-
功能:
du
用于显示文件和目录的磁盘使用情况。
常用选项
-
-h
: 以人类可读的格式显示磁盘使用情况。 -
-s
: 显示每个文件和目录的总使用空间,而不是列出每个子文件和子目录的使用情况。 -
-a
: 显示文件和目录的磁盘使用情况(默认只显示目录)。 -
-c
: 输出结果中添加总计。 -
-d <深度>
: 限制目录的递归深度。 -
--max-depth=<深度>
: 只显示指定深度的目录磁盘使用情况。
练习步骤
#按字节为单位,排除所有 .o⽂件,⼀条命令统计⽬录/buildd的总⼤⼩
du -b --exclude='*.o' /buildd
#按字节为单位,⼀条命令统计⽬录/bin (可能为指向其他⽬录的符合链接)的总⼤⼩
du -bL /bin
#查看⽂件file.txt的磁盘使⽤情况,并以⼈类可读的格式显⽰结果
du -h file.txt
32、stat
命令
基本功能
-
功能:
stat
用于显示文件或文件系统的详细状态信息,包括文件的大小、权限、时间戳、inode 信息等。
常用选项
-
-f
: 显示文件系统的状态信息。 -
-c
: 自定义输出格式,显示特定的文件状态信息。 -
--printf
: 自定义输出格式,不包含额外的换行符。 -
--format
: 类似于-c
,用于定义输出格式。 -
--dereference
: 显示符号链接指向的文件的状态信息,而不是符号链接本身。
练习步骤
#获取⽂件file.txt的基本信息
stat file.txt
33、sync命令
基本功能
-
功能:
sync
命令用于将内存中缓存的数据写入磁盘,确保数据安全存储。通常用于确保磁盘写操作完成。
练习步骤
#同步系统缓存⾄持久存储 sync
34、truncate
命令
基本功能
-
功能:
truncate
用于调整文件的大小,可以用来扩展或截断文件。
常用选项
-
-s <大小>
: 设置文件的大小,支持使用K
,M
,G
等单位。 -
-r <参考文件>
: 将文件调整为与参考文件相同的大小。 -
--size=+/-<大小>
: 增加或减少文件大小。 -
--no-create
: 不创建新文件,如果文件不存在则不做任何操作。
练习步骤
#创建1GB的稀疏⽂件file
truncate -s 1G file
#将⽂件file.txt截断为100字节⼤⼩
truncate -s 100 file.txt
#清除⽇志⽂件/var/log/syslog的内容
truncate -s 0 /var/log/syslog
35、echo
printf
命令
基本功能(echo)
-
功能:
echo
用于在终端中输出文本或变量的值。它是最常用的字符输出命令之一。
常用选项
-
-n
: 输出后不换行(默认echo
会在输出的末尾添加换行符)。 -
-e
: 解释反斜杠转义字符(如\n
换行,\t
制表符等)。 -
-E
: 禁止解释反斜杠转义字符(这是默认行为)。
基本功能(printf)
-
功能:
printf
类似于编程语言中的printf
函数,用于格式化和打印文本。与echo
不同,printf
可以更加精确地控制输出格式。
常用选项
-
"%s"
: 用于格式化字符串。 -
"%d"
: 用于格式化整数。 -
"%f"
: 用于格式化浮点数。 -
\n
: 用于换行。 -
\t
: 用于制表符。 -
注意:
printf
不会自动换行,需手动添加\n
。
练习步骤
#打印当前⽬录
pwd 或者 echo $PWD
#⼀条命令计算 2000+23
expr 2000 + 23
#不换⾏打印矩阵hello world
echo -n "hello world"
#输出当前时间
echo $(date)
#输出包含以 .cfg 结尾的⽂件和⽂件夹
echo *.cfg
#把aa bb cc dd ee 按照空格分段,每段单独⼀⾏
echo -e "aa \nbb \ncc \ndd \nee"
#设置Hello World⽂本颜⾊为红⾊
printf "\033[31mHello World\033[0m \n"
#设置abcdefg最⼤宽度为5,超过制定宽度以省略号替代
printf "%.5s...\n" "abcdefg"
36、id logname who whoami命令
功能
-
logname:
logname
用于返回当前用户的登录名(即最初登录的用户,不会随着切换用户而改变)。 -
whoami:
whoami
用于显示当前执行该命令的用户身份。与logname
不同,whoami
会根据当前用户身份返回结果,特别是在使用su
或sudo
切换用户时非常有用。 -
who:
who
用于显示当前登录系统的用户和相关会话信息,如用户登录时间、登录终端等。 -
id:
id
显示当前用户的 UID(用户标识符)、GID(组标识符)以及用户所属的组列表。
练习步骤
#打印当前有效组ID
id -g
#打印当前有效⽤⼾ ID
id -u
#打印当前登录⽤⼾名
logname
#打印当前所有登录⽤⼾
who
#显⽰当前登录到系统的⽤⼾信息,并包括系统启动时间和运⾏级别
who -a
#显⽰当前登录到系统的⽤⼾信息,并统计登录⽤⼾的数量
who -q
#显⽰当前登录到系统的⽤⼾信息,并只显⽰⽤⼾的登录名称和终端设备
who -s
#打印当前有效⽤⼾名
whoami
37、test expr seq 命令
基本功能(test)
-
功能:
test
命令用于执行条件测试,返回 0 表示条件为真,非零表示条件为假。它通常用于脚本中的条件判断。
常用选项
-
-e <文件>
: 检查文件是否存在。 -
-f <文件>
: 检查文件是否为普通文件。 -
-d <目录>
: 检查目录是否存在。 -
-r <文件>
: 检查文件是否可读。 -
-w <文件>
: 检查文件是否可写。 -
-x <文件>
: 检查文件是否可执行。 -
-n <字符串>
: 检查字符串是否非空。 -
-z <字符串>
: 检查字符串是否为空。 -
<整数1> -xx <整数2>
: 检查两个整数是否(eq:等于、ne:不等于、gt:大于、ge:大于或等于、lt:小于、le:小于等于)。
基本功能(expr)
-
功能:
expr
用于计算表达式,包括整数运算、字符串比较、模式匹配等。它可以在脚本中用于进行简单的算术计算和字符串操作。
常用选项
-
expr <整数1> + <整数2>
: 计算两个整数的和。 -
expr <整数1> - <整数2>
: 计算两个整数的差。 -
expr <整数1> \* <整数2>
: 计算两个整数的积(乘法符号需转义)。 -
expr <整数1> / <整数2>
: 计算两个整数的商。 -
expr <字符串1> : <模式>
: 执行模式匹配。 -
expr <字符串1> = <字符串2>
: 比较两个字符串是否相等。
基本功能(seq)
-
功能:
seq
用于生成指定范围的数字序列,常用于循环或批量操作。
常用选项
-
seq <结束>
: 从 1 开始到指定的结束数字。 -
seq <开始> <结束>
: 从指定的开始数字到结束数字。 -
seq <开始> <步长> <结束>
: 指定步长生成数字序列。 -
-s <分隔符>
: 指定输出数字之间的分隔符。 -
-w
: 输出固定宽度的数字序列,补齐前导零。
练习步骤
#判断⽂件/foo/bar修改时间新于 /a/b/c
test /foo/bar -nt /a/b/c
#判断⽬录 /foo/bar是否为空
test -z "$(ls -A /foo/bar)"
#⼀条命令递归删除⽬录/foo/bar下所有的死符号链接
find /foo/bar -xtype l -delete
#判断/dev/vda设备是否为块设备
test -b /dev/vda
#判断/foo/bar是否为可执⾏⽂件
test -x /foo/bar
#判断/foo/bar是否为常规⽂件
test -f /foo/bar
#按字符串判断Shell变量 不等于变量bar
test "$foo" != "$bar"
#按字符串判断Shell变量 等于变量bar
test "$foo" = "$bar"
#判断shell 变量 $foo⾮空字符串
test -n "$foo"
#判断shell 变量 $foo为空字符串
test -z "$foo"
#按数值判断shell变量$foo等于8
test $foo -eq 8
#按数值判断shell变量$foo不⼤于1
test $foo -le 1
#⼀条命令计算 2000+24
expr 2000 + 24
#⼀条命令计算并输出6乘以2
expr 6 \* 2
#⼀条命令判断10是否⼤于5,并返回相应结果
expr 10 \> 5
#⼀条命令等宽输出99到107之间的连续整数,并以空格分隔
seq -w -s ' ' 99 107
#⼀条命令打印从0到10
seq 0 10
#⼀条命令输出10内的奇数,并指定空格为分隔符
seq -s ' ' 1 2 10
38、date命令
基本功能
-
功能:
date
用于显示和设置系统日期和时间。它还可以根据特定格式输出日期和时间。
常用选项
-
+<格式>
: 自定义输出日期/时间格式。 -
-u
: 以 UTC 时间显示日期和时间。 -
-d <字符串>
: 显示指定的日期和时间,而不是当前日期和时间。 -
-s <字符串>
: 设置系统日期和时间(需要超级用户权限)。
#转换从1970-01-01 UTC的流逝秒2147483647为时间字符串
date --date=@2147483647
#以默认格式打印系统本地⽇期和时间
date
#以默认格式打印系统UTC⽇期和时间
date -u
#打印本地时区缩写
date +%Z
#打印从1970-01-01 UTC⾄今的流逝秒
date +%s
39、nproc printenv env命令
-
功能:
nproc
用于显示当前系统可用的处理器(CPU)数量,常用于查看并行处理能力。 -
功能:
printenv
显示当前用户的环境变量。 -
功能:
env
显示当前环境变量,或者在指定的环境下运行命令。
#打印CPU的逻辑核⼼数
nproc
#⼀条命令打印环境变量abc的值,若其不是环境变量则不打印
printenv abc
#打印所有环境变量
printenv 或者 env
40、hostname uname命令
基本功能(hostname)
-
功能:
hostname
用于显示或设置系统的网络主机名。
常用选项
-
hostname
: 显示当前主机名。 -
-I
: 显示系统的 IP 地址。 -
-f
: 显示完整的主机名(FQDN)。 -
-s
: 显示短主机名(短形式的主机名)。 -
-d
: 显示主机名的域名部分。 -
-b
: 设置静态主机名(需要超级用户权限)。
基本功能(uname)
-
功能:
uname
用于显示系统的基本信息,如内核名称、版本、架构等。
常用选项
-
-a
: 显示系统的所有信息。 -
-r
: 显示内核版本。 -
-m
: 显示机器的硬件架构(如x86_64
)。 -
-s
: 显示操作系统的名称。
#⼀条命令打印本机所有IP地址,且仅包含IP地址,不包含⽹卡等其他信息
hostname -I
#打印机器名
hostname
#打印内核版本
uname -r
#打印本机硬件名称(架构)
uname -m
#⼀条模块显⽰操作系统的版本信息
uname -v
#一条命令打印系统启动开始时间,且仅包含时间字符串
uptime -s
#一条命令打印系统累计运行时间、登录用户数和当前负载
uptime
#一条命令显示机器正常运行的时间
uptime -p
41、kill命令
基本功能
-
功能:
kill
用于向指定的进程发送信号,通常用于终止进程。
常用选项
-
kill <PID>
: 向进程发送SIGTERM
信号(默认信号)。 -
kill -9 <PID>
: 发送SIGKILL
信号,强制终止进程。 -
kill -l
: 列出所有可用的信号。 -
killall <进程名>
: 根据进程名称终止所有匹配的进程。
#强⾏杀死进程 1234
kill -9 1234
#给进程号1234发送挂起信号
kill -HUP 1234
#向进程号为3456的进程发⽣SIGCONT信号,继续该进⾏的执⾏
kill -CONT 2345
42、nice renice
基本功能
-
功能:
nice
命令用于以修改过的优先级启动进程。优先级值的范围从 -20(最高优先级)到 19(最低优先级),默认优先级为 0。较高的值(19)意味着进程获得较少的 CPU 资源,较低的值(-20)意味着进程会获得更多的 CPU 资源。
常用选项
-
-n <优先级>
: 指定启动时的进程优先级(范围:-20 到 19)。 -
nice <命令>
: 以默认的优先级(0)运行命令。 -
sudo nice -n <负优先级> <命令>
: 以负优先级运行命令,需要sudo
权限。
基本功能
-
功能:
renice
命令用于调整已经运行的进程的优先级。你可以通过进程 ID(PID)、用户或进程组来调整优先级。较高的值(例如 19)意味着该进程获得较少的 CPU 时间,而较低的值(例如 -20)则意味着该进程将获得更多的 CPU 时间。
常用选项
-
renice <优先级> -p <PID>
: 修改指定进程 ID 的优先级。 -
renice <优先级> -u <用户名>
: 修改指定用户的所有进程的优先级。 -
renice <优先级> -g <组ID>
: 修改指定进程组的优先级。 -
-n <优先级>
: 设置新的优先级。
#使⽤root⽤⼾以最⾼优先级运⾏程序/foo/bar
nice -n -20 /foo/bar
#以最低优先级运⾏程序/foo/bar
nice -n 19 /foo/bar
#查看当前进程的优先级
nice
#调整进程1234⾄最低优先级
renice -n 19 -p 1234
#将当前终端下所有进程的优先级提供到15
renice 15 -u $( whoami )
#将进程ID为9876的进程的优先级降低到-5
renice -5 9876
43、tee
基本功能
-
功能:
tee
从标准输入读取数据,输出到标准输出的同时也写入到文件。它常用于将命令的输出同时保存到文件和终端中。
常用选项
-
-a
: 追加内容到文件中,而不是覆盖文件。 -
-i
: 忽略中断信号(通常用于防止进程意外中断)。 -
tee <文件>
: 将命令的输出重定向到文件,同时显示在终端。
#将ls命令的结果保存到⼀个名为filelist.txt的⽂件中
ls |tee filelist.txt
#ls命令的结果通过管道传给grep命令并对“*.txt”进⾏筛选
ls | grep .txt
#仅包含⽂件/⽬录名的列表/bin⽬录,将列表内容记录⽂件 foo,并打印总⽂件/⽬录数⾄标准输出
ls /bin |tee foo |wc -l
44、nohup sleep timeout
基本功能
-
功能:
nohup
允许命令在退出终端后继续运行,通常用于后台运行进程。
常用选项
-
nohup <命令> &
: 将命令放到后台运行,并忽略挂起信号。 -
nohup <命令> > <文件>
: 将输出重定向到文件,避免输出留在终端。 -
nohup <命令>
: 执行命令,并忽略挂起信号。
#⼀条命令后台运⾏程序/foo/bar
nohup /foo/bar &
#睡眠1分钟
sleep 60
#⼀条命令运⾏程序/foo/bar,超过⼀分钟终⽌
timeout 60 /foo/bar
#10s后结束top命令
timeout 10 top
45、tar
1. 创建 tarball
基本功能
-
功能:
tar
命令用于将多个文件和目录打包成一个tarball
,方便存储或传输。可以根据需要选择不同的压缩方式。
常用选项
-
-c
: 创建新的tarball
文件。 -
-f <文件名>
: 指定tarball
的文件名。 -
-v
: 显示详细的处理信息。 -
-C
: 切换到指定目录再打包。
2. 排除指定模式
基本功能
-
功能: 在创建
tarball
文件时,可以使用--exclude
选项排除指定的文件或目录。
常用选项
-
--exclude=<模式>
: 排除匹配指定模式的文件或目录。
3. 压缩:gzip、bzip2 和 xz
基本功能
-
功能:
tar
支持将归档文件压缩为gzip
、bzip2
或xz
格式。不同的压缩方式具有不同的压缩率和速度。
常用选项
-
-z
: 使用gzip
压缩。 -
-j
: 使用bzip2
压缩。 -
-J
: 使用xz
压缩。
4. 仅包含指定目录所在的文件系统
基本功能
-
功能: 在创建
tarball
时,使用--one-file-system
选项可以避免跨越不同的文件系统,仅包含当前文件系统中的文件。
常用选项
-
--one-file-system
: 只打包当前文件系统中的文件,避免跨越到其他挂载点。
5. 解压 tarball
基本功能
-
功能:
tar
命令用于解压缩tarball
文件。根据压缩格式选择相应的选项(如-z
、-j
或-J
)。
常用选项
-
-x
: 解压文件。 -
-f <文件>
: 指定要解压的tarball
文件。 -
-v
: 显示解压过程中的详细信息。 -
-C <目录>
: 将解压的内容存放到指定目录中。
7. 消除 N 级目录
基本功能
-
功能: 在解压
tarball
时,使用--strip-components
可以忽略归档中的前几级目录,只解压其中的部分路径。
常用选项
-
--strip-components=<N>
: 解压时忽略归档中前 N 级目录。
#归档⽬录/foo/bar⾄⽂件bar.tar,且同时计算MD5校验和并记录⽂件bar.md5
tar -c /foo/bar | tee bar.tar | md5sum > bar.md5
#归档压缩⽬录 /foo/bar为 bar.tar.gz
tar -zcf bar.tar.gz /foo/bar
#归档压缩⽬录/foo/bar 为bar.tar.bz2
tar -jcf bar.tar.bz2 /foo/bar
#归档压缩⽬录 /foo/bar 为 bar.tar.xz
tar -Jcf bar.tar.xz /foo/bar
#不跨⽂件系统归档/foo/bar 为bar.tar
tar -cf bar.tar /foo/bar --one-file-system
#解压bar.tar.gz
tar -zxf bar.tar.gz
#解压bar.tar.bz2
tar -jxf bar.tar.bz2
#⼀条命令解压bar.tar⾄⽬录/foo
tar -xf bar.tar -C /foo
#解压bar.tar.xz
tar -Jxf bar.tar.xz
#仅解压bar.tar中a/b/c
tar -xf bar.tar a/b
#列表bar.tar
tar -tf bar.tar
#消除2级⽬录解压bar.tar
tar -xf bar.tar --strip-components=2
46、mount umount mountpoint
基本功能(mount)
-
功能:
mount
用于将文件系统挂载到指定的目录(挂载点),可以挂载本地设备或远程文件系统(如 NFS、CIFS 等)。
常用选项
-
mount -a
: 挂载/etc/fstab
文件中定义的所有文件系统。 -
mount <设备> <挂载点>
: 手动挂载指定的设备到挂载点。 -
-t <文件系统类型>
: 指定文件系统类型(如ext4
、nfs
、vfat
等)。 -
-o <选项>
: 指定挂载选项(如ro
只读,rw
读写,loop
用于挂载文件,noexec
禁止执行文件)。 -
-v
: 显示详细信息。
基本功能(umount)
-
功能:
umount
命令用于卸载已挂载的文件系统,确保文件系统的写操作已完成,适合在维护和更改设备时使用。
常用选项
-
umount <挂载点或设备>
: 卸载指定的挂载点或设备。 -
-f
: 强制卸载(适用于网络文件系统)。 -
-l
: 延迟卸载,直到设备不再被使用。 -
-v
: 显示详细信息。
#当前⽤⼾为root,直到没有进程访问/foo/bar时,卸载他
umount -l /foo/bar
#当前⽤⼾为root,强⾏卸载⽂件系统/foo/bar
umount -f /foo/bar
#当前⽤⼾为root,修改/etc/fatab后,为让改变⽣效
mount -a
#当前⽤⼾为root,挂载ISO⽂件foo.iso⾄⽬录/mnt/bar
mount -o loop foo.iso /mnt/bar
#当前⽤⼾为root,挂载/etc/fstab中定义的⽬录或设备/foo/bar
mount /foo/bar
#⼀条命令打印加载点/boot的主设备号和次设备号
stat -c '%t %T' /boot
#⼀条命令打印/boot是否为加载点
mountpoint /boot
47、tail
基本功能
-
功能:
tail
命令用于显示文件的最后几行内容,默认显示最后 10 行。它常用于监控日志文件的最新输出或查看文件的末尾部分。
常用选项
-
-n <行数>
: 指定显示文件末尾的行数。 -
-f
: 持续输出文件的新内容,常用于监控日志文件。 -
-F
: 类似于-f
,但如果文件被重新创建(如日志轮转),tail
会继续读取新文件。 -
-c <字节数>
: 以字节为单位显示文件末尾的内容。 -
-q
: 安静模式,不输出文件名头信息(当处理多个文件时)。 -
--pid=<PID>
: 与-f
结合使用,直到指定进程 ID 退出时停止监控。 -
--max-unchanged-stats=<N>
: 在检测到文件没有变化时自动停止(用于与-F
一起)。
#实时追踪并打印⽂本⽂件foo末尾内容
tail -f foo
#打印⽂本⽂件foo最后⼀⾏
tail -1 foo 或者
tail -n1 foo 或者
sed -n '$p' 1.txt 或者
awk 'END { print }' 1.txt
48、ps
基本功能
-
功能:
ps
用于显示当前系统中的进程状态,可以选择性地显示特定进程的信息,如进程 ID(PID)、用户、CPU 和内存使用率、运行时间等。ps
命令结合不同的选项,支持静态输出,而不像top
那样是动态更新的。
常用选项
-
-e
: 显示系统中的所有进程(等同于-A
)。 -
-f
: 全格式显示,包含更多详细信息。 -
-u <用户名>
: 显示特定用户的进程。 -
-p <PID>
: 显示指定进程 ID 的信息。 -
-C <命令名>
: 按进程名称筛选进程。 -
-o <列>
: 自定义显示的列内容(如 PID、USER、%CPU 等)。 -
--sort <列>
: 按指定列进行排序(如按 CPU 或内存使用率排序)。 -
-l
: 显示更长的格式,包括优先级(PRI)等信息。
#⼀条命令打印进程名为bash的进程信息
ps -C bash
#⼀条命令打印PID为2023的进程信息
ps -p 2023
#⼀条命令打印PID为2023的进程⽤⼾名
ps -o user -p 2023
#⼀条命令打印名为bash的进程⽤⼾名
ps -C bash -o user
#打印进程名为zsh的所有唯⼀进程⽤⼾名
ps -C zsh -o user= | sort -u
#仅打印最早启动且进程名为bash的进程⽤⼾名
ps -C bash -o user= --sort=lstart | head -1
#⼀条命令搜索mysql的进程
ps -ef | grep mysql
49、fuser prtstat
基本功能(fuser)
-
功能:
fuser
命令用于显示哪些进程正在访问特定的文件、目录或设备。它还可以用于发送信号(如终止信号)给这些进程。
常用选项
-
-m <挂载点>
: 显示使用指定挂载点的所有进程。 -
-v
: 显示详细信息,列出进程和用户信息。 -
-k
: 杀死所有使用指定文件或目录的进程。 -
-i
: 提示确认,和-k
结合使用时,逐个询问是否杀死进程。 -
-u
: 显示使用文件的进程的用户。 -
-s
: 仅显示访问文件的进程的 PID,而不显示其他详细信息。 -
-a
: 显示文件中所有类型的进程访问(如读、写、执行)。
基本功能(prtstat)
-
功能:
pidstat
命令是sysstat
工具包的一部分,用于监控系统中进程的资源使用情况,包括 CPU、内存、I/O、上下文切换等信息。
常用选项
-
-u
: 显示 CPU 使用情况(默认)。 -
-r
: 显示内存使用情况。 -
-d
: 显示 I/O 使用情况。 -
-w
: 显示进程的上下文切换统计信息。 -
-p <PID>
: 监控特定进程的资源使用情况。 -
-h
: 以人类可读格式显示统计信息(如 KB、MB)。 -
-I
: 显示 CPU 使用率百分比,而不是相对使用率。 -
-t
: 显示线程级别的统计信息。
#查找打开⽬录/foo/bar的进程详细信息
fuser -v /foo/bar
#⼀条命令查找监听端⼝80的进程详细信息
fuser -v -n tcp 80
#打印进程1234的统计信息
prtstat 1234