Linux 命令练习手册

时间:2024-10-22 07:01:18

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、lnlinkreadlink 命令

基本功能

  • 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、mkdirrmdir 命令练习文档

基本功能

  • 功能: 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、chownchgrp 命令

基本功能

  • 功能:

    • 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、basenamedirname 命令

基本功能

  • 功能:

    • 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 会根据当前用户身份返回结果,特别是在使用 susudo 切换用户时非常有用。

  • 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 支持将归档文件压缩为 gzipbzip2xz 格式。不同的压缩方式具有不同的压缩率和速度。

常用选项
  • -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 <文件系统类型>: 指定文件系统类型(如 ext4nfsvfat 等)。

  • -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