Linux 命令练习手册

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450702.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[每周一更]-(第119期):“BP”大揭秘:生物学与金融学中的微小单位竟有如此大不同!

最近&#xff08;2024.09.29&#xff09;央行要把存量房贷在LPR&#xff08;贷款市场报价利率&#xff09;基础上&#xff0c;降低30BP&#xff0c;刚好基因行业内&#xff0c;也有bp的概念&#xff0c;通过发音无法区分&#xff0c;以下就讲解下生物学的bp和金融学的BP的概念的…

汽车零部件行业CRM应用数字化解决方案解析

1.行业背景与挑战分析 近年来&#xff0c;随着国家对新能源汽车行业的大力支持&#xff0c;国内汽车产业不仅在国内市场实现了弯道超车&#xff0c;而且新能源汽车的海外出口也开拓了新的市场&#xff0c;为自主品牌的新能源战略贡献了新的增长点&#xff1b;这一迅猛发展的趋…

最新版快递小程序源码 独立版快递系统 附教程

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 懂得都懂&#xff0c;现在电商平台退换货量大&#xff0c;快递需求量大&#xff0c;对接物流一个单子4块到6块之间 其中间是例如润 其余的 就不说了吧 互站上买的源码 分享一下 还有…

如何查看默认网关地址:详细步骤

在日常的网络配置与故障排查中&#xff0c;了解并正确查看默认网关地址是一项基础且至关重要的技能。默认网关是连接本地网络与外部网络&#xff08;如互联网&#xff09;的关键节点&#xff0c;它扮演着数据包转发的重要角色。无论是家庭网络、办公室网络还是更复杂的网络环境…

SSM框架学习(六、快速启动框架:SpringBoot3实战)

目录 一、SpringBoot3介绍 1.SpringBoot3简介 2.快速入门 3.入门总结 &#xff08;1&#xff09;Question1&#xff1a;为什么依赖不需要写版本&#xff1f; &#xff08;2&#xff09;Question2&#xff1a;启动器&#xff08;starter&#xff09;是什么&#xff1f; &a…

震惊!OpenAI突破性进展,清华天才联手破解扩散模型难题!

扩散模型很成功&#xff0c;但也有一块重大短板&#xff1a;采样速度非常慢&#xff0c;生成一个样本往往需要执行成百上千步采样。为此&#xff0c;研究社区已经提出了多种扩展蒸馏&#xff08;diffusion distillation&#xff09;技术&#xff0c;包括直接蒸馏、对抗蒸馏、渐…

如何将LiDAR坐标系下的3D点投影到相机2D图像上

将激光雷达点云投影到相机图像上做数据层的前融合&#xff0c;或者把激光雷达坐标系下标注的物体点云的3d bbox投影到相机图像上画出来&#xff0c;都需要做点云3D点坐标到图像像素坐标的转换计算&#xff0c;也就是LiDAR 3D坐标转像素坐标。 看了网上一些文章都存在有错误或者…

利用Llama3、CrewAI与Groq打造高效智能邮件客服系统

一、唠嗑 如果说AI的到来&#xff0c;哪个行业最有危机感&#xff0c;我觉得电商客服应该是榜上有名的。目前像淘宝、京东其实也是先用AI客服进行回复&#xff0c;客户不满意才使用人工客服&#xff0c;从而达到降本增效的目的。 而本次&#xff0c;就是使用 Llama3 CrewAI …

顺序表的查找

. GetElem(L,i):按位查找。获取L中的第i个位置元素的值。 静态查找&#xff1a; #define MaxSzie 10 typedef struct{ElemType data[MaxSize];int length; }Sqlist;ElemType GetElem(Sqlist L,int i) {return L.data[i-1]; }动态分配&#xff1a; #define InitSzie 10 type…

公司新来一个同事,把枚举运用得炉火纯青...

1.概览 在本文中&#xff0c;我们将看到什么是 Java 枚举&#xff0c;它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式。 enum关键字在 java5 中引入&#xff0c;表示一种特殊类型的类&#xff0c;其总是继承java.lang.Enum类&#xff0c;更多内容可以自行…

SpringBoot驱动的车辆信息管理平台

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

如何使用C#实现Padim算法的训练和推理

目录 说明 项目背景 算法实现 预处理模块——图像预处理 主要模块——训练&#xff1a;Resnet层信息提取 主要模块——信息处理&#xff0c;计算Anomaly Map 主要模块——评估 主要模块——评估&#xff1a;门限值的确定 主要模块——推理 写在最后 项目下载链接 说…

【即见未来,为何不拜】聊聊分布式系统中的故障监测机制——Phi Accrual failure detector

前言 昨天在看tcp拥塞控制中的BBR(Bottleneck Bandwidth and Round-trip propagation time)算法时&#xff0c;发现了这一特点&#xff1a; 在BBR以前的拥塞控制算法中(如Reno、Cubic、Vegas)&#xff0c;都依赖于丢包事件的发生&#xff0c;在高并发时则会看到网络波动的现象…

【含开题报告+文档+PPT+源码】基于SSM的景行天下旅游网站的设计与实现

开题报告 随着互联网的快速发展&#xff0c;旅游业也逐渐进入了数字化时代。作为一个旅游目的地&#xff0c;云浮市意识到了互联网在促进旅游业发展方面的巨大潜力。为了更好地推广云浮的旅游资源&#xff0c;提高旅游服务质量&#xff0c;云浮市决定开发一个专门的旅游网站。…

深入理解计算机系统--计算机系统漫游

对于一段最基础代码的文件hello.c&#xff0c;解释程序的运行 #include <stdio.h>int main() {printf ( "Hello, world\n") ;return 0; }1.1、信息就是位上下文 源程序是由值 0 和 1 组成的位&#xff08;比特&#xff09;序列&#xff0c;8 个位被组织成一组…

梯度下降算法优化—随机梯度下降、小批次、动量、Adagrad等方法pytorch实现

现有不足 现有调整网络的方法是借助成本函数的梯度下降方法&#xff0c;也就是给函数作切线&#xff0c;不断逼近最优点&#xff0c;即成本函数为零的点。 梯度下降的一般公式为&#xff1a; 即根据每个节点成本函数的梯度进行更新&#xff0c;使用该方法有一些问题&#xff…

探索OpenCV的人脸检测:用Haar特征分类器识别图片中的人脸

目录 简介 OpenCV和Haar特征分类器 实现人脸检测 1. 导入所需库 2. 加载图片和Haar特征分类器 3. 检测人脸 4. 标注人脸 5. 显示 6、结果展示 结论 简介 在计算机视觉和图像处理领域&#xff0c;人脸识别是一项重要的技术。它不仅应用于安全监控、人机交互&#xff0…

10秒钟用Midjourney画出国风味的变形金刚

上魔咒 Optimus Prime comes from the movie Transformers, Chinese style, Wu ShanMing, Ink Painting Halo Dyeing, Conceptual of the Digita Art, MasterComposition, Romantic Ancient Style, Inspired by traditional patterns and symbols, Minimalism, do not con…

day01 -- MybatisPlus

1. MybatisPlus简介 有基础的同学可结合资源中的代码一起看 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生 特性 通用的 CRUD 操作&#xff1a;内置通用 Mapper、通用 Service&#xff0c;仅仅通过少量配置即可实…

私有化部署大模型最佳解决方案 Ollama (8B)模型

私有化部署大模型Ollama 为什么需要私有化部署大模型一、Ollama本地部署Llama3大模型二、Langchain4j调用Ollama本地部署模型API三、Ollama本地部署nomic向量模型四、Spring AI调用Ollama本地部署模型API 为什么需要私有化部署大模型 企业考虑成本和数据隐私问题&#xff0c;会…