Linux(CentOS7)常用命令【帮助、文件操作、文件查看编辑、搜索、用户管理、网络、磁盘、监控等】,收藏这一篇文章就够了
Linux(CentOS7)常用命令【班助、文件操作、文件查看编辑、搜索、用户管理、网络、磁盘、监控等】,收藏这一篇文章就够了
Linux(CentOS7)常用命令详解
一 先了解一下 Centos7 的目录结构:
在详解常用命令之前,先对Linux的树型目录结构做个简单的了解,如下所示:
简单说明:
/ #根目录
/bin #基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, cd等等。这个目录中的文件都是可执行的,一般的用户都可以使用。
/dev #设备文件,比如声卡、磁盘、鼠标、键盘等。
/etc #系统管理和配置文件
/etc/init.d #启动配置文件和脚本,可在这里添加启动脚本。
/etc/rc.local #用户添加启动项
/home #用户主目录,比如用户user的主目录就是/home/user,可以用~user表示
/lib #标准程序设计库存放路径,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin #超级管理命令,这里存放的是系统管理员使用的管理程序。
/tmp #临时文件目录,有时用户运行程序的时候,会产生临时文件。 /tmp就用来存放临时文件的。
/root #系统管理员的主目录
/mnt #用来临时挂载其他的文件系统
/lost+found #这个目录平时是空的,系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。
/media #即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录
/proc #虚拟文件目录,可直接访问这个目录来获取系统信息。
/var #所有服务的登录文件或错误讯息档案(log files)都在 /var/log 里面
/boot #包含Linux内核及系统引导程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一 般情况下,GRUB或LILO系统引导管理器也位于这个目录;
/usr #最庞大的目录,要用到的应用程序和文件几乎都在这个目录,其中包含:
usr/bin #众多的应用程序
/usr/sbin #超级用户的一些管理程序
/usr/include #Linux下开发和编译应用程序所需要的头文件
/usr/lib #常用的动态链接库
/usr/share/man #帮助文档
/usr/src #源代码,Linux内核的源代码就放在/usr/src/Linux里
/usr/local/bin #本地增加的命令
/usr/local/lib #本地增加的库根文件系统
. : #代表当前路径
.. : #代表上一级目录
~ : #代表用户目录路径
二.常用命令详解
1 **帮助命令 **
help- 显示命令的帮助信息
help 命令用于查看 Linux 命令的简短帮助语法,和 man 命令相比更加简洁。这里给出几个 help 命令的例子。
help cd: 查看 cd 切换目录命令的帮助,会显示:
cd: cd [dir]
Change the current directory to DIR.
The variable $HOME is the default DIR.
Examples:
cd /tmp Change to the /tmp directory
cd Change to the user's home directory
cd ~/bin Change to the bin subdirectory of the user's home dir
2 文件目录操作
ls - 列出目录内容
ls 命令用于列出目录的内容,它的语法为:
ls [options] [file或dir]
如果不加任何参数,ls 会列出当前目录内容。我们可以给ls命令加上很多选项,这里详细说明几个常用选项:
- -a: 列出所有文件,包括隐藏文件。隐藏文件名称开头为 . 。
- -l: 以长格式列出文件信息,包括文件权限、属主、大小、创建日期等信息。
- -h: 以人类可读方式列出文件大小,如 1K、234M、2G 等。
- -s: 列出文件大小,对快速查找大文件很有帮。
- -S: 根据文件大小排序,最大的文件排在最上面。
- -t: 根据文件修改时间排序,最近修改的文件排在最上面。
- -r: 反转排序结果,例如文件默认按名字排序,加上 -r 后按相反顺序排序。
- -d: 仅列出目录,不列出其内容。
- -R: 递归列出目录下的所有子目录和文件的信息。例如:
# 列出所有文件,包括隐藏文件
ls -a
# 以长格式列出文件信息并且按大小排序
ls -laS
# 列出目录名,不显示内容
ls -d */
# 递归列出etc目录下的所有子目录和文件
ls -R /etc/
# 以人类可读格式列出文件大小,并反转排序结果
ls -h -rS
所以通过 ls 命令的各种选项,我们可以灵活地控制目录内容的显示方式和排序,这在日常的文件管理中非常实用。
cd- 切换当前工作目录
cd命令是Linux中最常用的命令之一,用于切换当前工作目录。cd的基本语法很简单:cd 目录路径它会切换到指定的目录路径。我们来看几个具体例子:
例1:切换到home目录
cd /home
例2:切换到用户软件下载目录
cd ~/Downloads
例3:从家目录切换到桌面,再返回根目录
cd ~/Desktop
cd ~
例4:从任意目录切换到上一级目录
cd ..
例5:前往某个目录,操作完毕再返回之前所在目录
cd /var/log
#do something
cd -
这些就是cd命令的一些基本语法和示例。通过cd命令,我们可以灵活地在Linux系统的各个目录之间进行切换。
cp- 复制文件或目录
cp命令用于Linux系统中的文件和目录复制。它的基本语法为:cp 源 目标将源文件的内容复制到目标中。我们来看几个常用例子:
例1:复制文件
cp file1.txt file2.txt
这将file1.txt复制为file2.txt。
例2:复制目录
cp -r dir1 dir2
这将dir1目录递归复制为dir2。-r参数用于复制目录。
例3:复制并重新命名
cp file1.txt file3.txt
这将file1.txt复制并命名为file3.txt。
例4:覆盖已存在的目标
cp -f file1.txt file2.txt
这将强制覆盖file2.txt。-f参数用于强制复制。
例5:硬链接复制
cp -l file1.txt file2.txt
这将创建file1.txt的硬链接file2.txt。-l参数用于创建硬链接,硬链接的概念就像C语言里的指针。
例6:将文件复制到目录
cp file1.txt /home/user1
这将file1.txt复制到/home/user1目录中。
例7:交互式复制,避免覆盖
cp -i file1.txt file2.txt
这会在覆盖已存在的file2.txt前提示用户确认。-i参数用于交互确认。
这些就是cp命令的一些常用语法和示例。通过cp,我们可以实现Linux文件的复制、重命名和创建硬链接。熟练使用cp命令可以大大提高我们的文件管理效率。
find - 在文件系统中查找文件和目录
find 命令用于在Linux系统中查找文件和目录。它的语法比较复杂,主要如下:find 路径 参数路径指定查找的目录起点,参数指定查找条件和动作。我们来看几个常用例子:
例1:根据名称查找文件
find /home -name "file1.txt"
这将在/home目录下查找名称为file1.txt的文件。
例2:根据大小查找文件
find /home -size +100M # 查找大于100M的文件
find /home -size -100M # 查找小于100M的文件
find /home -size 100M # 查找刚好为100M的文件
例3:根据类型查找文件
find /home -type f -name "*.txt" # 查找文本文件
find /home -type d -name "dir1" # 查找目录
例4:根据用户和权限查找文件
find /home -user user1 # 查找属主为user1的文件
find /home -perm 777 # 查找权限为777的文件
例5:根据访问时间查找文件
find /home -atime -1 # 查找最近1天访问的文件
find /home -atime +7 # 查找最近7天以上访问的文件
例6:结合-exec执行动作
find /home -name "*.txt" -exec rm {} \; # 删除home目录下的txt文件
find /home -name "file1.txt" -exec cp {} /tmp \; # 将file1.txt复制到/tmp
find命令非常强大,可以根据Linux文件的各种属性进行灵活的查找。再配合exec参数,可以对搜索结果实施指定的动作,大大提高文件管理效率。
mkdir- 创建一个新目录
mkdir 命令用于在 Linux 中创建目录。它的基本语法为:mkdir 目录名我们来看几个常用例子:
例1:创建一级目录
mkdir dir1
这将创建一个名为dir1的一级目录。例2:创建多级目录
mkdir -p dir1/dir2/dir3
这将创建dir1/dir2/dir3多级目录。-p参数用于递归创建不存在的上级目录。
例3:设置权限创建目录
mkdir -m 777 dir1
这将创建dir1目录并设置777权限。-m参数用于设置权限。
例4:作为其他用户创建目录
mkdir -u user1 -g group1 dir1
这将以user1用户和group1组的身份创建dir1目录。-u和-g参数用于指定用户和组。
例5:设置目录信异时间
mkdir -v dir1
这将创建dir1目录并显示详细信息。-v参数用于显示详细输出。
例6:无法覆盖已存在目录
mkdir dir1
mkdir dir1
第二个mkdir dir1命令将无法执行,提示目录已存在。mkdir无法覆盖已存在的目录。以上就是mkdir命令的一些常用语法和示例。通过mkdir,我们可以轻松创建和管理Linux中的各级目录。
mv- 移动或重命名文件和目录
mv 命令用于在 Linux 中移动和重命名文件和目录。它的基本语法为: mv 源 目标 ,源和目标可以是文件或目录。我们来看几个常用例子:
例1:移动文件
mv file1.txt /home/user1/
这将 file1.txt移动到/home/user1/目录中。
例2:移动目录
mv dir1 /home
这将 dir1 目录移动到/home目录中。
例3:重命名文件
mv file1.txt file2.txt
这将file1.txt重命名为file2.txt。
例4:重命名目录
mv dir1 dir2
这将 dir1目录重命名为 dir2。
例5:强制移动文件,覆盖目标
mv -f file1.txt file2.txt
这将强制覆盖已存在的file2.txt文件。-f 参数用于强制执行。
例6:交互式移动,避免覆盖
mv -i file1.txt file2.txt
这会在移动file1.txt到已存在的file2.txt前提示用户确认。-i参数用于交互确认。
例7:将文件移动到目录
mv file1.txt dir1/
这将file1.txt移动到dir1目录中。mv命令用于灵活地在Linux系统中管理文件和目录的位置与名称。熟练掌握mv的各种语法,可以大大优化我们的文件管理效率。
pwd- 显示当前工作目录的路径
pwd 命令是一个非常简单但实用的Linux命令,用于显示用户当前工作目录的绝对路径。它的语法只有一条:pwd我们来看一个示例:例1:显示当前工作目录
pwd
/home/user1/dir1
这将显示用户当前所在目录为/home/user1/dir1。
pwd命令通常用于:
- 检查我们目前所在的目录路径,避免操作错误目录造成数据误删除等严重后果。
- 切换目录之后,快速确认我们是否切换到了正确的路径。
- 在脚本中获取当前工作目录的路径,用于其他命令的执行等。
- 当路径显示异常时,可以判断是否由于链接或其他原因导致路径混乱,需要及时修复。
rename - 重命名文件
rename 命令用于在 Linux 中批量重命名文件和目录。它的基本语法为: rename ‘s/旧字符/新字符/’ * 这个命令会将所有文件名或目录名中的旧字符替换为新字符。我们来看一些常用例子:
例1:将所有.txt文件的后缀名改为.doc
rename 's/.txt/.doc/' *.txt
这将目录下所有.txt文件重命名为.doc文件。
例2:将文件前缀从“file”改为“doc”
rename 's/^file/doc/' *file*
这将所有文件名中前缀为file的改为doc。
例3:同时改后缀名和前缀
rename 's/^file.txt/doc.doc/' *file*.txt
这将文件名为file.txt的文件重命名为doc.doc。
例4:将空格替换为下划线
rename 's/ /_/' *
这将所有文件名和目录名中的空格替换为下划线。
例5:同时替换多个字符
rename 's/a/e/g;s/b/f/g;s/c/g/' *
这将文件名中所有a替换为e,b替换为f,c替换为g。rename命令可以根据我们指定的替换规则,实现Linux文件名和目录名的批量修改。熟练使用rename可以大大提高我们的文件管理效率。
rm- 删除文件或目录
rm 命令是Linux中用于删除文件和目录的命令。它的基本语法为:rm 文件或目录 我们来看几个常用例子:
例1:删除文件
rm file1.txt
这将删除file1.txt文件。
例2:强制删除文件
rm -f file1.txt
这将强制删除file1.txt文件,不提示确认。-f 参数用于强制删除。
例3:递归删除目录
rm -r dir1/
这将递归删除dir1目录及其子目录和文件。-r 参数用于递归删除。
例4:按模式删除文件
rm *.txt
这将删除当前目录下所有.txt文件。
例5:交互式删除,确认后删除
rm -i *.txt
这会在删除每个.txt文件前提示用户确认。-i参数用于交互确认删除。
例6:删除时不进入回收站,直接删除
rm -force *.txt
这将直接删除.txt文件,不将其移入回收站。(部分桌面环境下可用)rm是Linux中删除文件和目录的最简单直接的命令,但同时也是最危险的命令之一。因为删除后无法恢复,所以在使用rm时一定要非常小心谨慎。熟练掌握rm的各种参数,可以更灵活高效地删除文件,但也充分理解其危险性,防止因误删除而造成数据损失。
rmdir - 删除空目录
rmdir 命令用于在Linux中删除空目录。它的基本语法为:rmdir 目录名我们来看几个常用例子:
例1:删除空目录
rmdir dir1
这将删除空目录dir1。
例2:删除多级空目录
rmdir dir1/dir2/dir3
这将递归删除多级空目录dir1/dir2/dir3。
例3:无法删除非空目录
rmdir dir1/*
这将无法删除,提示dir1不是空目录。rmdir只能删除空目录。
例4:强制删除非空目录
rmdir --ignore-fail-on-non-empty dir1
这将强制删除dir1目录,即使其不是空目录。(部分Linux版本支持)–ignore-fail-on-non-empty参数用于强制删除非空目录。
例5:递归删除上级目录
rmdir dir1 dir1/dir2
这将首先删除dir1/dir2子目录,然后再删除dir1目录。符合rmdir从下至上的删除顺序。rmdir与rm比较,rmdir只能删除空目录,且删除顺序从下至上。这可以最大限度避免误删除带有内容的目录。所以在删除目录时,推荐优先使用rmdir命令。熟练使用rmdir可最大限度避免误删除重要目录,提高目录操作的安全性。但同时也需要理解其只能删除空目录的限制,与rm命令的区别。
touch- 创建一个新文件或更新文件的访问和修改时间戳
touch命令用于在Linux中创建新的空文件或修改文件时间戳。它的基本语法为:touch 文件。我们来看几个常用例子:
例1:创建新文件。
touch file1.txt
这将创建一个新的空文件file1.txt。
例2:修改文件时间戳
touch file1.txt
如果file1.txt文件已存在,这将只修改其最后修改时间。
例3:一次修改多个文件时间戳
touch file1.txt file2.txt file3.txt
这将同时修改file1.txt,file2.txt和file3.txt三个文件的最后修改时间。
例4:设置文件的访问时间
touch -a file1.txt
这将仅修改file1.txt的最后访问时间,保留最后修改时间不变。-a参数用于设置访问时间。
例5:设置文件的修改时间
touch -m file1.txt
这将仅修改file1.txt的最后修改时间,保留最后访问时间不变。-m参数用于设置修改时间。
例6:同时更新访问时间与修改时间
touch -am file1.txt
这将同时更新file1.txt的最后访问时间与最后修改时间。touch命令可以方便地创建新文件或补充更新已有文件的时间戳。时间戳的修改可以影响文件的各种属性,所以需谨慎操作。
tree- 以树状结构显示目录的内容
tree命令 用于以树状图列出目录结构。它的基本语法为:tree 目录 我们来看几个常用例子:例1:显示当前目录结构
tree
这将显示当前目录及其子目录的树状结构。
例2:显示指定目录结构
tree /home
这将显示/home目录的树状结构。
例3:深度限制
tree /home -L 2
这将只显示/home目录下两层的树状结构。-L参数用于指定层 depth 数。
例4:过滤隐藏文件
tree /home -I '*~'
这将显示/home的树状结构,但过滤隐藏文件。-I参数用于过滤符合模式的文件。
例5:输出保存至文件
bash
tree /home > tree.txt
这将/home的树状结构输出重定向保存到tree.txt文件中。
例6:显示每个目录 Occupation
tree -d /home
这将仅显示/home的目录,不显示文件。-d参数用于仅显示目录。
例7:以图形方式显示
tree -A /home
这将以ASCII字符图形方式显示/home的树状结构。-A参数用于ASCII图形输出。tree命令可以直观地以树状图显示目录结构,了解目录层次与组织。熟练使用tree的各种参数,可以让我们更清晰精细地浏览和分析系统目录。
basename - 提取文件名中的基本名称部分
basename 命令用于在Linux中获取或删除文件名路径中的目录与后缀部分。它的基本语法为:basename 文件路径 后缀。我们来看几个常用例子:
例1:获取文件名
basename /home/user1/file.txt
file.txt
这将获取file.txt文件的基本名称,过滤路径。
例2:获取文件路径
basename /home/user1/file.txt .txt
/home/user1/file
这将获取file.txt文件的路径,过滤文件名与后缀。
例3:获取文件路径与名称
basename /home/user1/file.txt .txt
/home/user1/file
这将获取file.txt文件的路径与基本名称,过滤后缀。
例4:删除文件名后缀
bash
basename file.txt .txt
file
这将获取file.txt的基本名称file,删除后缀.txt。
例5:删除文件路径
basename /home/user1/file.txt
file.txt
这将获取file.txt的基本名称file.txt,删除路径/home/user1/。
例6:指定多个后缀删除
bash
basename file.txt .txt .doc
file
这将依次删除file.txt中的.txt后缀与.doc后缀,获取最终基本名称file。basename命令用于获取和处理文件路径与名称,对文件名称的提取、转换、修改等操作非常实用。熟练掌握basename的各项语法,可以让我们更高效地处理与管理文件。
dirname - 提取文件路径中的目录部分
dirname命令用于在Linux中获取文件路径,删除文件名与后缀部分。它的基本语法为:dirname 文件路径。
我们来看几个常用例子:
例1:获取文件路径
dirname /home/user1/file.txt
/home/user1
这将获取file.txt文件的路径/home/user1,删除文件名file.txt。
chattr - 修改文件属性
chattr命令是Linux下对文件属性操作的命令。它可以设置文件的一些属性,如是否可变更(immutable)、是否可压缩(compress)、是否可重复数据删除(nodump)等。chattr的基本语法为:
bash
chattr [参数] [模式] 文件或目录
参数主要有:- + : 添加某属性
- - : 取消某属性
- = : 设置属性模式主要有: - i : 文件不能被修改,删除,重命名
- a : 仅允许追加
- c : 允许压缩
- u : 文件可以被任何用户不可见
- A : 只允许增加数据,不允许删除数据
- d : 文件可以被 dump备份工具备份例子:
# 让test文件不可修改,删除和重命名
chattr +i test
# 取消test文件不可修改属性
chattr -i test
# 让test文件只能追加内容
chattr +a test
# 同时设置test文件只追加和压缩的属性
chattr +ac test
# 将test文件设置为dump备份和不可修改的属性
chattr =di test
这些属性设置后,相关的操作会受到限制。比如设置了i属性的文件不能被 vi 打开修改。这在一定程度上可以增强系统安全性,防止关键文件的意外修改或删除。
lsattr- 显示文件属性
lsattr 命令是 Linux下显示文件扩展属性的命令。它可以显示 chattr 命令所设置的文件属性,如是否可变更 (immutable)、是否可压缩(compress)等。lsattr的基本语法为:
lsattr [可选参数] 文件或目录
可选参数主要有: - R : 递归显示目录下所有文件的扩展属性例子:
# 查看test文件属性
lsattr test
# 输出
----- test
# 设置test文件为不可修改后再查看
chattr +i test
lsattr test
# 输出
----i- test
# 设置test文件为不可修改和压缩后再查看
chattr +ci test
lsattr test
# 输出
----ic test
# 递归查看当前目录下所有文件的属性
lsattr -R .
lsattr的输出由10个字符组成,分别表示:
- 文件的类型:'-'是普通文件,'d’是目录,'l’是链接文件
- 置位粘滞位(sticky bit)
- 用户ID位 (SUID)
- 用户组ID位 (SGID)
- 文件只能删除位 (nodump)
- 文件不可变更位 (immutable)
- 文件压缩位 (compress)
- 文件不可更改位置位 (nouchg)
- 文件自动锁定位 (auto-lock)
- 文件只追加位 (append only)lsattr命令可以让我们清晰地查看文件当前所设置的各种扩展属性,了解文件在这些方面的限制。它与chattr命令搭配使用,可以很方便地管理文件属性。
file- 确定文件类型
file 命令用于判断文件类型和文件格式,它会读取文件头部信息判断文件的格式和类型。file 命令的基本语法是:
file 文件路径
例如:
file a.txt
# a.txt: ASCII text
file b.pdf
# b.pdf: PDF document, version 1.6
file c.mp3
# c.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v2, 128 kbps, 44.1 kHz, Stereo
file d.exe
# d.exe: PE32 executable (GUI) Intel 80386, for MS Windows
可以看到,file 命令会判断:
a.txt 是 ASCII 文本文件,b.pdf 是 PDF 文档,版本是 1.6,c.mp3 是 MP3 音频文件,具体参数如比特率等,d.exe 是 Windows 系统下的 GUI 可执行文件所以。
md5sum- 计算文件的 MD5 校验和
md5sum 命令用于计算和检验文件的 MD5 哈希校验值。MD5 算法会计算一个 128 位的数字指纹(hash value),这个指纹基本上是文件的唯一标识,可以用来校验文件是否被修改过。md5sum 命令的基本语法是:
md5sum 文件路径
例如:
md5sum a.txt
# 7981baadd1da60b0a6196fda1e987c1f a.txt
md5sum b.pdf
# ceb2084b54b72ae090af92dfff27dc99 b.pdf
md5sum c.mp3
# 4fb8378515a043fa676f81a9d064e259 c.mp3
可以看到,md5sum 命令会输出文件的 MD5 哈希值,以及文件名。我们可以将这个 MD5 值存起来,以后重新计算这个文件 MD5 值,如果相同,说明文件未被修改;如果不同,说明文件已被修改过。
例如,我们存储 a.txt 的 MD5 值是 7981baadd1da60b0a6196fda1e987c1f。
一段时间后重新计算:
md5sum a.txt
# 4fb8378515a043fa676f81a9d064e259 a.txt
得到的 MD5 值不同,说明 a.txt 文件已被修改过。所以,md5sum 主要用来:
- 计算文件的 MD5 校验值 。
- 校验文件是否被修改过这在保证文件完整性和安全性方面具有重要作用,是 Linux 运维中的重要工具。总的来说,md5sum 命令通过计算文件的 MD5 校验值,可以校验文件是否被修改过,这在 Linux 系统运维中具有重要作用,是运维人员必须掌握的命令之一。
3 查看文件内容
cat- 连接文件并打印到标准输出
cat 命令用于连接文件并打印到标准输出。cat 的基本语法是:
cat 文件路径
例如:
cat a.txt
# 打印 a.txt 文件的内容
cat a.txt b.txt
# 打印 a.txt 和 b.txt 文件内容合并的结果
cat > c.txt
# 从标准输入读取内容,并保存到 c.txt 文件
cat 命令常用来:
- 打印文件内容:cat a.txt
- 合并打印多个文件内容:cat a.txt b.txt
- 从标准输入创建文件:cat > c.txt,然后输入内容,用 Ctrl+D 结束例如:
cat > c.txt
# 输入内容:
hello
world
# Ctrl+D
cat c.txt
# hello
# world
我们输入的内容被保存在了 c.txt 文件中。
- 追加内容到文件:cat >> c.txt例如先 cat c.txt,得到:
hello
world
然后:
cat >> c.txt
# 输入:
this
is
# Ctrl+D
cat c.txt
# hello
# world
# this
# is
我们输入的内容被追加到 c.txt 文件中。所以,cat 命令可以:
- 打印文件内容
- 合并并打印多个文件
- 从标准输入创建文件和追加内容到文件
tac- 反向打印文件的内容。
tac 命令是 cat 命令的反向,它会从最后一行开始打印文件内容。tac 的基本语法是:
tac 文件路径
例如:
cat a.txt
# hello
# world
# this
# is
tac a.txt
# is
# this
# world
# hello
可以看到,cat 命令从上到下打印 a.txt 文件内容,而 tac 命令从下到上打印内容。tac 主要用来:1. 反向打印文件内容。如果要看某日志文件中的最后几行,tac 命令很有用。2. 反向输出文件内容。例如:
cat a.txt | tac
# is
# this
# world
# hello
这会将 a.txt 文件正常顺序输出,然后反向输出。3. 合并多个文件,并反向输出:
tac a.txt b.txt c.txt
# 会将 a.txt、b.txt 和 c.txt 文件内容反向合并输出
所以,tac 命令主要用于:
- 反向打印单个或多个文件的内容
- 与 cat 命令组合,实现正常顺序和反向顺序输出这在需要查看文件内容的最后几行,或需要反向输出内容的场景下非常有用。
more - 分页显示文件内容
more 命令用于分页查看文件内容,它可以让用户一页一页的浏览文件内容。more 的基本语法是:
more 文件路径
例如:
more a.txt
# 会以一页一页的方式打印 a.txt 文件的内容
当我们运行 more a.txt 时:
- 会先打印文件的第一页内容。
- more 会停在页底,提示:–More–,等待用户输入。
- 用户可以输入以下命令:- 空格键:向下翻一页
- Enter:向下翻一行
- b:向上翻一页
- q:退出 more
- 其它命令如 /字符串:向下搜索字符串4. 根据用户输入,more 会继续打印下一页内容,或者退出。所以,more 命令主要用来:- 分页查看文件内容,避免文件内容一次性打印太多阅读不方便。
- 通过 more 提供的简单命令,可以翻页、一行一行向下移动,或搜索内容等。
- 与 cat 命令相比,more 适合查看较大文件的内容。例如一个 100 行的文件,用 cat 打印会一次显示所有的内容,而用 more 可以一页(如30行)一页的浏览。当文件内容较长不方便一次性阅读时,more 提供了一个简单方便的分页查看命令。这在处理大文件时可以很好地提高工作效率,是 Linux 中非常实用的命令。
less- 以交互方式浏览文件内容
less 命令是 more 命令的增强版本,它用于分页查看和浏览文件内容。less 的基本语法是:
less 文件路径
例如:
less a.txt
# 会以一页一页的方式打印 a.txt 文件的内容
当我们运行 less a.txt 时:
- 会先打印文件的第一页内容。
- less 会停在页底,提示用户输入命令。
- 用户可以输入更丰富的命令:- 空格键:向下翻一页
- b:向上翻一页
- q:退出 less
- g:跳到文件头
- G:跳到文件尾
- /字符串:向下搜索字符串
- ?字符串:向上搜索字符串
- n:重复上一个搜索
- p:翻上一页
- 等更多命令
根据用户输入,less 会翻页、搜索等。所以,less 命令相比 more 命令,主要增强在:- 更丰富的页面翻页、跳转命令:可以跳到头尾、上下页等
- 更强大的搜索功能:支持向上搜索、重复搜索等
- 支持回滚:可以随时回滚到上一页
- 其它功能:支持标记、复制、备份文件查看等例如,less 可以很方便的在一个大文件中快速搜索和翻阅我们需要的内容,这在提高工作效率方面有很大帮助。less 命令在功能和易用性方面,都超过了 more 命令,是分页查看大文件的首选命令。它是 Linux 运维者和开发人员必不可少的工具之一。
head- 显示文件的开头部分
head 命令用于打印文件头部的内容。head 命令的基本语法是:
head 文件路径
默认情况下,head 命令会打印文件的前 10 行内容。我们可以通过 -n 参数指定需要打印的行数,例如:
head -n 5 a.txt
# 打印 a.txt 文件的前 5 行
head -n 20 b.log
# 打印 b.log 文件的前 20 行
head 命令常用于:
- 查看文件头部内容:我们可以很快了解文件开头的内容,比如文件的格式、主要内容等。
- 与 tail 命令结合使用,可以查看文件的开头、结尾内容:
head -n 10 a.txt | tail -n 5
# 查看 a.txt 的第 6-10 行
head -n 5 a.txt
# 前 5 行
tail -n 10 a.log
# 最后 10 行
- 实时监控日志文件:我们可以通过定期运行 head -n 10 some.log 命令来实时看到最新的日志内容。head 命令主要用于,查看文件头部内容,指定打印的行数。
- 与 tail 结合使用,可以选择文件的部分内容查看。
- 实时监控日志文件的新内容head 命令让我们有选择地查看文件头部内容,这在排查问题、实时监控日志等方面有很大帮助。它与 tail 命令一起,可以让我们更加灵活地查看文件内容,是 Linux 文本处理中非常有用的工具。
tail- 显示文件的末尾部分
tail 命令用于打印文件尾部的内容。tail 命令的基本语法是:
tail 文件路径
默认情况下,tail 命令会打印文件的最后 10 行内容。我们可以通过 -n 参数指定需要打印的行数,例如:
bash
tail -n 5 a.txt
# 打印 a.txt 文件的最后 5 行
tail -n 20 b.log
# 打印 b.log 文件的最后 20 行
tail 命令常用于:
- 查看文件尾部内容:我们可以很快了解文件结尾的内容,比如最近更改等。
- 与 head 命令结合使用,可以查看文件的开头、结尾内容:
head -n 10 a.txt | tail -n 5
# 查看 a.txt 的第 6-10 行
head -n 5 a.txt
# 前 5 行
tail -n 10 a.log
# 最后 10 行
-
实时监控日志文件:我们可以通过 tail -f some.log 命令来实时看到日志新增的内容。
-
备份和还原机制:通过 tail 命令也可实现基本的备份和还原功能。
-
与 head 结合使用,可以选择文件的部分内容查看。
-
实时监控日志文件新增内容。
-
实现基本的备份和还原功能tail 命令让我们有选择地查看文件尾部内容,尤其是监控日志文件,这在排查问题和故障发现方面有很大帮助。它与 head 命令一起,可以让我们更加灵活地查看文件内容,是 Linux 文本处理中必不可少的工具。
cut- 从行中剪切出指定的字段
cut 命令用于截取文件中的列 (字段)。cut 命令的基本语法是:
cut [选项] 文件
常用选项有:
- -f:选取字段,按字段编号提取
- -d:自定义分隔符,默认是制表符\t
- -c:按字符编号提取例如,有这样一个文件 a.txt:
name age gender
john 22 male
mary 20 female
tom 25 male
- 按字段提取:
cut -f 1 a.txt
# name
# john
# mary
# tom
cut -f 2 a.txt
# age
# 22
# 20
# 25
这会提取 a.txt 文件的第一列和第二列。2. 按字符范围提取:
cut -c 1-3 a.txt
# nam
# joh
# mar
# tom
这会提取每行的前 3 个字符。3. 指定自定义分隔符:如果文件使用 | 分隔,而不是空格,我们可以:
cut -d '|' -f 1 a.txt
# 按 | 分隔,提取第一列
cut 命令主要用于:
- 按照列号或者字符位置,提取文件中的字段或字符
- 支持自定义分隔符,不只局限于空格分隔
常与其它命令如 awk、sort 等结合, implementing 较为复杂的文本处理cut 是 Linux 中一个重要的文本处理工具,熟练掌握和运用 cut 可以大大提高工作效率。
split - 分割文件为较小的部分
split 命令用于分割文件。它的基本语法是:split [选项] 文件名
例如:
split -b 100k 大文件
这会将大文件分割成多个大小为100kB的文件,文件名为xaa, xab, xac等。代码示例:
$ split -b 100k 大文件
这会生成文件xaa, xab, xac等。 解释:使用-b
选项以100kB为单位分割大文件。
split -l 100 大文件 前缀
这会将大文件分割成多个每100行一个文件的文件,文件名为前缀00,前缀01,前缀02等。代码示例:
$ split -l 100 大文件 前缀
这会生成文件前缀00, 前缀01, 前缀02等。 解释:使用-l
选项以100行为单位分割大文件,并指定分割后的文件名前缀为“前缀”。
split -d 大文件
这会将大文件分割成多个文件,文件名为大文件00,大文件01,大文件02等。使用数字作为后缀。代码示例:
bash
$ split -d 大文件
这会生成文件大文件00, 大文件01, 大文件02等。 解释:使用-d
选项分割大文件,并自动使用数字作为后缀。
paste- 将多个文件按列粘贴在一起
paste 命令用于合并文件。它的基本语法是: paste [选项] 文件1 文件2 ...
它将多个文件中的相应行合并在一起。主要选项有: -d 分隔符 :指定合并行时使用的分隔符,默认为 TAB。
例如: 1. paste file1 file2
这会将file1和file2中的相应行合并,使用TAB作为分隔符。代码示例:
$ paste file1 file2
解释:默认使用TAB作为分隔符,合并file1和file2中的对应行。
paste -d "," file1 file2
这会将file1和file2中的相应行合并,使用,作为分隔符。代码示例:
bash
$ paste -d "," file1 file2
sort - 对文件内容进行排序
sort 命令用于排序文件中的行。它的基本语法是:sort [选项] 文件名
它将文件名中的内容按字母顺序排列。主要选项有:
-n :按数字排序。
-r :反向排序。
-u :去重,只保留重复的行。
-t 分隔符 :指定排序时使用的分隔符,默认为空格。
例如 1. sort file
这会将file中的内容按字母顺序排列。代码示例:
$ sort file
解释:默认按字母顺序对file中的内容排序。
例子 2. sort -n file
这会将file中的内容按数字顺序排序。 代码示例:
$ sort -n file
解释:使用-n选项按数字顺序排序file中的内容。
例子 3. sort -r file
这会将file中的内容按相反的字母顺序排序。代码示例:
$ sort -r file
解释: 使用 -r 选项按相反的字母顺序排序file中的内容。 例子: file:
c
a
b
3
2
1
$ sort file
结果:
a
b
c
1
2
3
$ sort -n file
结果:
1
2
3
a
b
c
$ sort -r file
结果:
3
2
1
c
b
a
uniq- 显示或过滤重复行
uniq 命令用于报告或删除文件中的重复行。它的基本语法是: uniq [选项] [输入文件] [输出文件]
它会删除输入文件中的重复行,并将结果写入输出文件。主要选项有:
-c :报告每行出现的次数。
-d :只报告重复行。
-u :只报告非重复行。
例如: 1. uniq file
这会删除file中的重复行,并将结果写入file。 代码示例:
$ uniq file
解释:删除file中的重复行。
例如 2. uniq -c file
这会报告file中的每行出现的次数。 代码示例:
$ uniq -c file
解释:报告file中每行出现的次数,不删除重复行。
例如 3. uniq -d file
这会只报告file中的重复行。 代码示例:
$ uniq -d file
解释:只报告file中的重复行,不删除重复行。 例子: file:
a
a
b
b
c
c
c
uniq file
结果:
a
b
c
uniq -c file
结果:
2 a
2 b
3 c
uniq -d file
结果:
a
b
c
wc- 统计文件的字数、行数和字符数
wc 命令用于统计文件中的行数、单词数和字节数。它的基本语法是:wc [选项] 文件名
它会统计文件名中的行数、单词数和字节数。主要选项有:
-l :只显示行数。
-w :只显示单词数。
-c :只显示字节数。
例如 1. wc file
这会显示file中的行数、单词数和字节数。代码示例:
$ wc file
解释:显示file的行数、单词数和字节数。
例如 2. wc -l file
这会只显示file中的行数。代码示例:
$ wc -l file
解释:只显示 file 中的行数。
例如 3 wc -w file
这会只显示file中的单词数。 代码示例:
$ wc -w file
解释:只显示file中的单词数。例子: file:
Hello World!
How are you?
I’m fine。
wc file
结果:
3 10 30
wc -l file
结果:
3
wc -w file
结果:
10
解释:
- 3行
- 10个单词
- 30个字节
iconv - 转换文件的字符编码
iconv 命令用于转换文件中的字符编码。它的基本语法是:iconv -f orig_encoding -t new_encoding input_file > output_file
它会将input_file中的字符编码从orig_encoding转换成new_encoding,并将结果写入output_file。
例如:1. iconv -f GBK -t UTF-8 input.txt > output.txt
这会将input.txt中的GBK编码转换成UTF-8编码,并将结果写入output.txt。代码示例:
$ iconv -f GBK -t UTF-8 input.txt > output.txt
解释:将GBK编码的input.txt转为UTF-8编码的output.txt。
例如 2. iconv -f ISO-8859-1 -t UTF-8< input.txt > output.txt
这会将input.txt中的ISO-8859-1编码转换成UTF-8编码,并将结果写入output.txt。代码示例:
$ iconv -f ISO-8859-1 -t UTF-8< input.txt > output.txt
解释:将ISO-8859-1编码的input.txt转为UTF-8编码的output.txt。
dos2unix - 将 DOS/Windows 格式的文件转换为 Unix 格式
dos2unix 命令用于将文本文件中的换行符从CRLF转换成LF。它的基本语法是:dos2unix [选项] [文件名]
它会将文件名中的换行符从CRLF(\r\n,Windows格式)转换成LF(\n,Unix格式)。主要选项有:
-u 或 --unix :将CRLF转换成LF。
-d 或 --dos :将LF转换成CRLF。
例如:1. dos2unix file.txt
这会将file.txt中的CRLF转换成LF。代码示例:
$ dos2unix file.txt
解释:将Windows格式的file.txt转换成Unix格式。
例如 2. dos2unix -u file.txt
这也会将file.txt中的CRLF转换成LF。代码示例:
$ dos2unix -u file.txt
解释:同上,-u选项指定转换为Unix格式。
diff\ - 比较两个文件的差异
diff 命令用于比较文件之间的差异。它的基本语法是:diff [选项] 文件1 文件2
它会比较文件1和文件2的差异,默认以行为单位显示不同处。主要选项有:
-y :以字符为单位显示不同处。
-b :忽略比较中出现的空格。
-w :忽略比较中出现的空格,TAB和换行。
例如 1. diff file1 file2
这会比较file1和 file2的差异,默认以行为单位显示不同处。 代码示例:
$ diff file1 file2
例如 2. diff -y file1 file2
这会以字符为单位显示file1和file2的差异。 代码示例:
$ diff -y file1 file2
例如 3. diff -b file1 file2
这会忽略比较中出现的空格,比较file1和file2的差异。代码示例:
$ diff -b file1 file2
例子:
file1:
Hello World!
Good Luck!
file2:
HelloWorld!
GoodLuck!
$ diff file1 file2
结果:
2c2
< Luck!
—
Luck!
解释:第2行不同,file1有空格,file2无空格。
$ diff -b file1 file2
无输出解释:忽略空格,file1和file2无实际差异。
vimdiff - 使用 Vim 的差异模式比较文件
vimdiff 命令用于比较并编辑文件之间的差异。它的基本语法是:vimdiff [选项] 文件1 文件2
它会在vim编辑器中打开文件1和文件2,并标出两者的差异,允许你直接编辑两者的不同部分。主要选项有:
-d auction :设置diff算法。默认为 patience算法。
-w :设置窗口宽度。
-O :水平分割窗口。
例如: 1. vimdiff file1 file2
这会在vim中打开文件1和文件2,标出两者的差异。代码示例:
$ vimdiff file1 file2
解释:比较file1和file2的差异,在vim中直接编辑不同的部分。
例如 2. vimdiff -d algorithm file1 file2
这会使用指定的diff算法algorithm来比较file1和file2的差异。代码示例:
$ vimdiff -d patience file1 file2
解释:使用patience算法比较file1和file2的差异,显示在vim中。
例如 3. vimdiff -O file1 file2
这会使用垂直分割窗口比较file1和file2。代码示例:
$ vimdiff -O file1 file2
解释:比较file1和file2的差异,vim窗口垂直分割,文件并排显示。例子:同diff命令例子。vimdiff可以直接编辑显示的差异部分,方便修改后重新比较,直到文件一致。
rev- 反转文件中的字符顺序
rev 是一个 Linux 命令,它的功能是反转文件中的字符顺序,或反转字符串。例如:
# 反转文件内容
rev test.txt
# 反转字符串
rev "hello"
输出:
olleh
列1 反转文件内容
bash
cat test.txt
hello
world
rev test.txt
world
hello
列 2 反转字符串
bash
rev "hello"
olleh
列 3 结合其他命令使用
bash
# 查看文件最后5行
tail -n 5 test.txt | rev
# 删除文件最后5行
sed '1,5d' test.txt | rev > test1.txt
rev test1.txt > test.txt
rev 命令通过反转文件的内容或字符串,可以与其他命令结合,实现一些实用的功能。
grep - 在文件中搜索指定的模式
grep 是一个 Linux 命令,它的功能是在文件中搜索字符串和正则表达式。
例1 : 搜索文件中包含指定字符串的行
cat test.txt
hello
world
linux
grep "linux" test.txt
linux
输出中只包含包含 linux 的那一行。
例2: 搜索多个文件
grep "linux" test.txt test1.txt
例3 搜索目录下所有文件
grep "linux" *
例4 搜索不包含指定字符串的行
grep -v "linux" test.txt
hello
world
例5 搜索忽略大小写
grep -i "Linux" test.txt
linux
例6 搜索并显示行号
grep -n "linux" test.txt
3:linux
例7 搜索多个字符串
grep -e "hello" -e "world" test.txt
hello
world
或
grep "hello|world" test.txt
hello
world
grep 是一个强大的文本搜索工具,可以通过正则表达式和选项实现更强大的搜索功能,熟练使用 grep 能大大提高工作效率。
egrep- 在文件中使用扩展的正则表达式搜索模式
egrep 是 grep 的扩展版本,支持更加强大的正则表达式语法。
例子 1: 搜索多个字符串
egrep "hello|world" test.txt
hello
world
例子 2:搜索范围
egrep "h[ae]llo" test.txt
hello
例子 3:搜索指定次数的重复
egrep "o{2}" test.txt # 搜索两个o的字符串
hello
google
bash
egrep "o{2,5}" test.txt # 搜索2-5个o的字符串
hello
google
wooooo
例子4 : 搜索可选字符
egrep "colou?r" test.txt # 搜索color或colour
colour
例子5: 搜索零次或多次出现的字符
egrep "lo*" test.txt # 搜索l后跟零个或多个o的字符串
l
lo
lol
hello
wooloo
例子6: 用定位符锚定搜索范围
bash
egrep "^hello" test.txt # 搜索以hello开头的行
hello
egrep "hello$" test.txt # 搜索以hello结尾的行
hello
egrep 是一个功能强大的文本搜索工具,基于正则表达式实现灵活和高效的搜索。要真正掌握 egrep 还需要学习更深入的正则表达式知识。
join - 将两个文件中的行连接在一起
join 是一个 Linux 命令,它的功能是将两个文件根据共同的字段进行连接,即行级连接。
例1 : join 按默认的空格进行连接。
cat test1.txt
1 hello
2 world
3 linux
cat test2.txt
1 do
2 or
3 not
join test1.txt test2.txt
1 hello do
2 world or
3 linux not
默认以空格为分隔符,将test1和test2文件中的行连接起来
例子2 :指定连接字段。
cat test1.txt
1,hello
2,world
3,linux
cat test2.txt
1,do
2,or
3,not
join -1 1 -2 1 test1.txt test2.txt
1,hello,do
2,world,or
3,linux,not
-1 1 指定test1文件的连接字段为第1列
-2 1 指定test2文件的连接字段为第1列。连接结果中1,2列来自test1,第3列来自test2。
例子3 :连接未匹配行
cat test1.txt
1,hello
2,world
4,unix
cat test2.txt
1,do
3,not
join -a 1 test1.txt test2.txt
1,hello,do
2,world,
3,,not
4,unix,
-a 1 代表将test1文件中未匹配的行连接,缺失的字段填充1个空格。
例子4:连接时忽略大小写
join -i test1.txt test2.txt
-i 忽略连接字段的大小写差异join 是一个功能强大的用于行级连接的命令,熟练掌握join可以实现文件的合并、去重等功能,是Linux中的一个实用工具。
tr- 替换、删除或挤压字符
tr 是 Linux 中的一个转换命令,它的功能是替换、删除、压缩字符。
例1 :tr 命令替换字符
echo "hello" | tr 'e' 'a'
hallo
例2 : 删除字符
echo "hello" | tr -d 'e'
hllo
-d 代表删除,将 e 删除。
例子3:替换范围内字符
echo "hello" | tr 'a-z' 'A-Z'
HELLO
将 a-z 范围内的小写字母替换为 A-Z 范围内的大写字母。
例子4: 指定多个替换字符
echo "hello" | tr 'el' 'ip'
hippo
将 e 替换为 i,l 替换为 p。
例子 5: 压缩字符
echo "hello world" | tr -s ' '
hello world
-s 代表压缩,将多个空格压缩为一个空格。
例子 6 :字符集
echo "hello" | tr 'a-z' '[:upper:]'
HELLO
[:upper:] 代表大写字母字符集, tr 支持多种字符集
vi/vim - 打开 Vim 编辑器
Vi 是一款常用的文本编辑器,在 Linux 中经常用于编辑和查看文件。它具有强大的功能和灵活的操作方式。下面是一些 vi 命令的用法以及一些代表性的例子:
-
打开文件:
vi filename
例如:
vi file.txt
打开名为 “file.txt” 的文件。如果文件不存在,则会创建一个新文件。
下面是一些 vi 编辑器里常用的操作梳理:
Vi 是一款常用的文本编辑器,在 Linux 中经常用于编辑和查看文件。它具有强大的功能和灵活的操作方式。下面是一些 vi 命令的用法以及一些代表性的例子:
- 插入文本: 在 vi 的命令模式下按下
i
键,进入插入模式,可以开始编辑文本。 - 按 Esc 退出编辑模式。
- 保存文件: 在 vi 的命令模式下按下
:w
,然后按 Enter 键,将文件保存。 - 退出 vi: 在 vi 的命令模式下按下
:q
,然后按 Enter 键,退出编辑器。如果对文件进行了更改并且未保存,可以使用:q!
强制退出而不保存更改。 - 保存并退出: 在 vi 的命令模式下按下
:wq
,然后按 Enter 键,将文件保存并退出编辑器。 - 光标移动:
h
: 将光标向左移动。j
: 将光标向下移动。k
: 将光标向上移动。l
: 将光标向右移动。
- 删除文本:
x
: 删除光标所在位置的字符。dd
: 删除光标所在行。ndd
: 删除当前行及其后的 n-1 行。
- 搜索和替换:
/pattern
: 在文件中向前搜索指定的模式。?pattern
: 在文件中向后搜索指定的模式。:s/old/new/g
: 将当前行中的所有匹配项替换为新的文本。:%s/old/new/g
: 将文件中所有匹配项替换为新的文本。
这些是 vi 命令中的一些常见用法和示例。vi 还有许多其他功能和命令,可用于复制、粘贴、查找行号、跳转到指定行等操作。
4 文件压缩和解压
tar - 创建归档文件或提取归档文件的内容
Tar(tape archive)是一个在 Linux 命令行下常用的文件打包和压缩工具。它可以将多个文件或目录打包成一个单独的文件,并可以选择是否进行压缩。以下是 tar 命令的一些常见用法以及一些代表性的例子:
-
创建 tar 文件:
tar -cvf archive.tar file1 file2 directory
例如:
tar -cvf archive.tar file1.txt file2.txt directory
将文件 “file1.txt”、“file2.txt” 和名为 “directory” 的目录打包成一个名为 “archive.tar” 的 tar 文件。 -
解压 tar 文件:
tar -xvf archive.tar
例如:
tar -xvf archive.tar
将解压缩名为 “archive.tar” 的 tar 文件,将其中的文件和目录提取到当前目录。 -
压缩为 tar.gz 文件:
tar -czvf archive.tar.gz file1 file2 directory
例如:
tar -czvf archive.tar.gz file1.txt file2.txt directory
将文件 “file1.txt”、“file2.txt” 和名为 “directory” 的目录打包成一个经过 gzip 压缩的 tar 文件 “archive.tar.gz”。 -
解压缩 tar.gz 文件:
tar -xzvf archive.tar.gz
例如:
tar -xzvf archive.tar.gz
将解压缩名为 “archive.tar.gz” 的 tar.gz 文件,并将其中的文件和目录提取到当前目录。 -
列出 tar 文件内容:
tar -tvf archive.tar
例如:
tar -tvf archive.tar
列出名为 “archive.tar” 的 tar 文件中的内容,包括文件和目录的详细信息。 -
追加文件到现有的 tar 文件:
tar -rvf archive.tar newfile
例如:
tar -rvf archive.tar newfile.txt
将名为 “newfile.txt” 的文件追加到现有的 tar 文件 “archive.tar” 中。
unzip- 解压缩 ZIP 文件
在 Linux 命令行中,“unzip” 是一个常用的解压缩工具,用于解压缩 Zip 格式的压缩文件。下面是 unzip 命令的一些常见用法和代表性的例子:
-
解压缩 Zip 文件:
unzip archive.zip
例如:
unzip archive.zip
将解压缩名为 “archive.zip” 的 Zip 文件,将其中的文件提取到当前目录。 -
解压缩指定文件到指定目录:
unzip archive.zip file1 file2 -d /path/to/directory
例如:
unzip archive.zip file1.txt file2.txt -d /path/to/directory
将解压缩名为 “archive.zip” 的 Zip 文件中的 “file1.txt” 和 “file2.txt” 提取到指定目录 “/path/to/directory”。 -
解压缩并覆盖现有文件:
unzip -o archive.zip
例如:
unzip -o archive.zip
将解压缩名为 “archive.zip” 的 Zip 文件,并强制覆盖现有的同名文件。 -
查看 Zip 文件内容列表:
unzip -l archive.zip
例如:
unzip -l archive.zip
列出名为 “archive.zip” 的 Zip 文件中的文件列表。 -
解压缩并保留文件的权限和时间戳:
unzip -K archive.zip
例如:
unzip -K archive.zip
将解压缩名为 “archive.zip” 的 Zip 文件,并保留文件的权限和时间戳。 -
解压缩密码保护的 Zip 文件:
unzip -P password archive.zip
例如:
unzip -P secret archive.zip
将解压缩名为 “archive.zip” 的密码保护 Zip 文件,需要提供密码 “secret” 才能解压缩。
gzip - 压缩文件并生成以
在 Linux 命令行中,“gzip” 是一种常用的压缩工具,用于压缩文件并添加 “.gz” 扩展名。下面是 gzip 命令的一些常见用法和代表性的例子:
-
压缩文件:
gzip file.txt
例如:
gzip file.txt
将文件 “file.txt” 压缩为 “file.txt.gz”。 -
压缩多个文件:
gzip file1.txt file2.txt
例如:
gzip file1.txt file2.txt
将文件 “file1.txt” 和 “file2.txt” 分别压缩为 “file1.txt.gz” 和 “file2.txt.gz”。 -
压缩并保留原始文件:
gzip -k file.txt
例如:
gzip -k file.txt
压缩文件 “file.txt” 并保留原始文件,生成 “file.txt.gz”。 -
压缩目录及其内容:
gzip -r directory
例如:
gzip -r directory
压缩名为 “directory” 的目录及其内容,并在压缩后的文件名后面添加 “.gz” 扩展名。 -
解压缩文件:
gzip -d file.txt.gz
例如:
gzip -d file.txt.gz
解压缩名为 “file.txt.gz” 的文件,恢复为 “file.txt”。 -
查看压缩文件信息:
gzip -l file.txt.gz
例如:
gzip -l file.txt.gz
显示名为 “file.txt.gz” 的压缩文件的信息,包括压缩比率、原始文件大小等。 -
强制压缩文件(忽略警告):
gzip -f file.txt
例如:
gzip -f file.txt
强制压缩文件 “file.txt”,即使已存在同名的压缩文件。
zip - 创建 ZIP 归档文件
在 Linux 命令行中,“zip” 是一个常用的压缩工具,用于创建和管理 Zip 格式的压缩文件。下面是 zip 命令的一些常见用法和代表性的例子:
-
创建 Zip 文件:
zip archive.zip file1 file2 directory
例如:
zip archive.zip file1.txt file2.txt directory
将文件 “file1.txt”、“file2.txt” 和名为 “directory” 的目录打包成一个名为 “archive.zip” 的 Zip 文件。 -
添加文件到现有的 Zip 文件:
zip archive.zip newfile
例如:
zip archive.zip newfile.txt
将名为 “newfile.txt” 的文件添加到现有的 Zip 文件 “archive.zip” 中。 -
递归压缩目录及其内容:
zip -r archive.zip directory
例如:
zip -r archive.zip directory
将名为 “directory” 的目录及其内容递归压缩到一个名为 “archive.zip” 的 Zip 文件中。 -
查看 Zip 文件内容列表:
zip -sf archive.zip
例如:
zip -sf archive.zip
列出名为 “archive.zip” 的 Zip 文件中的文件列表。 -
解压缩 Zip 文件:
unzip archive.zip
例如:
unzip archive.zip
解压缩名为 “archive.zip” 的 Zip 文件,将其中的文件提取到当前目录。 -
解压缩指定文件到指定目录:
unzip archive.zip file1 file2 -d /path/to/directory
例如:
unzip archive.zip file1.txt file2.txt -d /path/to/directory
解压缩名为 “archive.zip” 的 Zip 文件中的 “file1.txt” 和 “file2.txt” 到指定目录 “/path/to/directory”。
5 信息显示命令
uname- 显示系统名称和信息。
在 Linux 命令行中,“uname” 是一个用于显示系统信息的命令工具。它可以用于获取关于操作系统和计算机硬件的各种信息。下面是 uname 命令的一些常见用法和代表性的例子:
-
显示操作系统名称:
uname -s
例如:
uname -s
显示操作系统的名称,如 “Linux”。 -
显示操作系统版本:
uname -r
例如:
uname -r
显示操作系统的版本号。 -
显示计算机硬件架构:
uname -m
例如:
uname -m
显示计算机的硬件架构,如 “x86_64”。 -
显示操作系统和计算机硬件的详细信息:
uname -a
例如:
uname -a
显示操作系统的名称、版本、硬件架构等详细信息。 -
显示网络节点名称(主机名):
uname -n
例如:
uname -n
显示网络节点的名称,即主机名。
这些是 uname 命令的一些常见用法和示例。uname 还有其他选项可用于获取更多特定的系统信息,如处理器类型、内核版本等。您可以使用 man uname
命令查看更详细的文档和使用说明。
hostname- 显示或设置主机名
在 Linux 命令行中,“hostname” 是一个用于显示或设置系统主机名的命令工具。系统主机名是标识网络上的计算机的名称。下面是 hostname 命令的一些常见用法和代表性的例子:
-
显示当前主机名:
hostname
例如:
hostname
显示当前系统的主机名。 -
设置新的主机名(需要 root 权限):
sudo hostname newhostname
例如:
sudo hostname mycomputer
设置系统的主机名为 “mycomputer”。 -
永久设置主机名(需要 root 权限):
编辑/etc/hostname
文件,并将所需的主机名写入该文件。然后重启系统,新的主机名将生效。 -
显示系统的 FQDN(Fully Qualified Domain Name):
hostname -f
例如:
hostname -f
显示系统的完全限定域名。 -
显示系统的 IP 地址:
hostname -i
例如:
hostname -i
显示系统的 IP 地址。
这些是 hostname 命令的一些常见用法和示例。hostname 还有其他选项可用于获取或设置主机名的不同方面,如获取域名、设置 DNS 解析等。您可以使用 man hostname
命令查看更详细的文档和使用说明。
dmesg- 显示内核启动日志
在 Linux 命令行中,“dmesg” 是一个用于显示系统启动信息和内核日志的命令工具。它可以帮助您查看有关系统硬件、驱动程序和内核的详细信息。下面是 dmesg 命令的一些常见用法和代表性的例子:
-
显示最近的系统启动信息:
dmesg
例如:
dmesg
显示系统最近的启动信息,包括内核加载的模块、硬件检测和驱动程序信息等。 -
限制输出的行数:
dmesg -n <level>
例如:
dmesg -n 3
限制输出到指定日志级别(level)的日志信息,级别范围从 0(紧急)到 7(调试)。 -
将输出写入文件:
dmesg > log.txt
例如:
dmesg > log.txt
将 dmesg 命令的输出重定向到文件 “log.txt”,方便后续查看或分析。 -
显示特定模块的日志信息:
dmesg | grep module_name
例如:
dmesg | grep usb
显示与 “usb” 相关的日志信息,过滤出包含 “usb” 的行。 -
查找特定关键字的日志信息:
dmesg | grep keyword
例如:
dmesg | grep error
查找包含关键字 “error” 的日志信息,以便快速定位错误或异常。
这些是 dmesg 命令的一些常见用法和示例。dmesg 可以帮助您了解系统的启动过程、硬件设备的检测和驱动程序的加载情况,以及其他与内核相关的信息。您可以使用 man dmesg
命令查看更详细的文档和使用说明。
uptime- 显示系统的运行时间和平均负载
在 Linux 命令行中,“uptime” 命令用于显示系统的运行时间和平均负载情况。它可以告诉您系统自启动以来的运行时间以及系统负载的平均值。下面是 uptime 命令的一些常见用法和代表性的例子:
-
显示系统的运行时间和平均负载:
uptime
例如:
uptime
显示系统自启动以来的运行时间和平均负载情况,包括当前时间、系统已运行的时间、用户数和平均负载值。 -
将系统的运行时间转换为可读格式:
uptime -p
例如:
uptime -p
以可读格式显示系统自启动以来的运行时间,如 “up 2 weeks, 3 days, 4 hours, 30 minutes”。 -
持续监控系统的运行时间和负载:
watch -n 1 uptime
例如:
watch -n 1 uptime
每秒刷新一次显示系统的运行时间和平均负载情况,用于持续监控系统的状态。 -
解读平均负载值:
平均负载值表示在一段时间内系统处于活动状态的平均进程数量。一般来说,平均负载值越低越好。如果平均负载值超过 1,表示系统负荷较高,可能需要进一步检查。
这些是 uptime 命令的一些常见用法和示例。uptime 帮助您快速查看系统的运行时间和负载情况,以评估系统的稳定性和负载情况。您可以使用 man uptime
命令查看更详细的文档和使用说明。
stat- 显示文件或文件系统信息
在 Linux 命令行中,“stat” 命令用于显示文件或文件系统的详细信息,包括文件的权限、所有者、大小、创建和修改时间等。它可以帮助您获取有关文件的元数据信息。下面是 stat 命令的一些常见用法和代表性的例子:
-
显示文件的详细信息:
stat filename
例如:
stat myfile.txt
显示文件 “myfile.txt” 的详细信息,包括权限、所有者、大小、创建时间、修改时间等。 -
显示文件的数字权限表示:
stat -c %a filename
例如:
stat -c %a myfile.txt
显示文件 “myfile.txt” 的权限以数字表示,如 “644”。 -
显示文件的所有者和组:
stat -c %U:%G filename
例如:
stat -c %U:%G myfile.txt
显示文件 “myfile.txt” 的所有者和组,如 “john:users”。 -
显示文件的大小(以字节为单位):
stat -c %s filename
例如:
stat -c %s myfile.txt
显示文件 “myfile.txt” 的大小,以字节为单位。 -
显示文件的创建时间和修改时间:
stat -c %w filename stat -c %y filename
例如:
stat -c %w myfile.txt
显示文件 “myfile.txt” 的创建时间,stat -c %y myfile.txt
显示文件 “myfile.txt” 的修改时间。
这些是 stat 命令的一些常见用法和示例。stat 可以提供文件和文件系统的详细信息,有助于了解文件的属性和元数据。您可以使用 man stat
命令查看更详细的文档和使用说明。
du- 显示磁盘使用情况
在 Linux 命令行中,“du” 命令用于估算文件或目录的磁盘使用情况。它可以显示文件或目录的总大小以及它们的子目录大小。下面是 du 命令的一些常见用法和代表性的例子:
-
显示当前目录的磁盘使用情况:
du
例如:
du
显示当前目录下所有文件和子目录的大小总和。 -
显示指定目录的磁盘使用情况:
du directory
例如:
du /home/user
显示 “/home/user” 目录的大小。 -
显示磁盘使用情况并以人类可读的格式显示文件大小:
du -h
例如:
du -h
显示当前目录下所有文件和子目录的大小总和,并以人类可读的格式(如 KB、MB、GB)显示文件大小。 -
显示目录的磁盘使用情况,并递归显示子目录的大小:
du -h -d depth directory
例如:
du -h -d 1 /home/user
显示 “/home/user” 目录下所有一级子目录的大小,并以人类可读的格式显示。 -
显示文件的磁盘使用情况,并限制递归深度:
du -h --max-depth=depth filename
例如:
du -h --max-depth=2 /home/user/file.txt
显示 “/home/user/file.txt” 文件的大小,并限制递归深度为 2。
这些是 du 命令的一些常见用法和示例。du 可以帮助您查看文件和目录的磁盘使用情况,有助于评估存储空间的分配和优化。您可以使用 man du
命令查看更详细的文档和使用说明。
df - 显示磁盘空间使用情况
在 Linux 命令行中,“df” 命令用于显示文件系统的磁盘空间使用情况。它可以显示每个文件系统的总大小、已使用空间、可用空间和挂载点等信息。下面是 df 命令的一些常见用法和代表性的例子:
-
显示所有文件系统的磁盘空间使用情况:
df
例如:
df
显示所有已挂载文件系统的磁盘空间使用情况,包括总大小、已使用空间、可用空间和挂载点等信息。 -
显示指定文件系统的磁盘空间使用情况:
df filesystem
例如:
df /dev/sda1
显示 “/dev/sda1” 文件系统的磁盘空间使用情况。 -
以人类可读的格式显示磁盘空间使用情况:
df -h
例如:
df -h
以人类可读的格式(如 KB、MB、GB)显示所有文件系统的磁盘空间使用情况。 -
显示每个文件系统的具体使用情况,而不包括伪文件系统(如 tmpfs):
df -x type
例如:
df -x tmpfs
显示所有已挂载文件系统的磁盘空间使用情况,但不包括类型为 tmpfs 的文件系统。 -
显示文件系统的inode使用情况:
df -i
例如:
df -i
显示所有已挂载文件系统的inode使用情况,包括总inode数、已使用inode数和可用inode数等。
这些是 df 命令的一些常见用法和示例。df 可以帮助您查看文件系统的磁盘空间使用情况,以便评估存储空间的分配和优化。您可以使用 man df
命令查看更详细的文档和使用说明。
top - 显示系统进程和资源使用情况
在 Linux 命令行中,“top” 命令用于实时显示系统的进程活动和系统性能信息。它可以显示运行中的进程列表、CPU 使用情况、内存使用情况、负载情况等。下面是 top 命令的一些常见用法和代表性的例子:
-
显示实时的进程活动和系统性能信息:
top
例如:
top
显示实时的进程列表,并提供 CPU 使用情况、内存使用情况、负载情况等系统性能信息。 -
按 CPU 使用率排序并显示前 N 个进程:
top -o %CPU -n N
例如:
top -o %CPU -n 10
按 CPU 使用率从高到低排序,并显示前 10 个 CPU 使用率最高的进程。 -
按内存使用率排序并显示前 N 个进程:
top -o %MEM -n N
例如:
top -o %MEM -n 10
按内存使用率从高到低排序,并显示前 10 个内存使用率最高的进程。 -
显示特定用户的进程信息:
top -u username
例如:
top -u john
显示用户 “john” 相关的进程信息。 -
在 top 中切换显示模式:
在 top 运行时,按下以下键可以切换不同的显示模式:- “1”:显示每个 CPU 核心的详细信息。
- “m”:按内存使用情况排序。
- “t”:按运行时间排序。
- “q”:退出 top。
这些是 top 命令的一些常见用法和示例。top 是一个强大的系统监视工具,可以帮助您实时查看系统的进程活动和性能指标。您可以使用 man top
命令查看更详细的文档和使用说明。
free - 显示内存使用情况
在 Linux 命令行中,“free” 命令用于显示系统内存的使用情况。它可以显示总内存、已使用内存、空闲内存、缓存和缓冲区的使用情况。下面是 free 命令的一些常见用法和代表性的例子:
-
显示系统内存的使用情况:
free
例如:
free
显示系统的总内存、已使用内存、空闲内存、缓存和缓冲区的使用情况。 -
以人类可读的格式显示内存大小:
free -h
例如:
free -h
以人类可读的格式(如 KB、MB、GB)显示系统内存的使用情况。 -
显示内存的详细信息,包括内存类型和内存使用情况:
free -t
例如:
free -t
显示系统内存的详细信息,包括内存类型(物理内存、交换空间)和每种类型的使用情况。 -
持续显示内存使用情况:
free -s interval
例如:
free -s 5
持续每隔 5 秒显示一次系统内存的使用情况。 -
以字节为单位显示内存大小:
free -b
例如:
free -b
以字节为单位显示系统内存的使用情况。
这些是 free 命令的一些常见用法和示例。free 命令可以帮助您了解系统内存的使用情况,包括总内存、已使用内存、空闲内存以及缓存和缓冲区的使用情况。您可以使用 man free
命令查看更详细的文档和使用说明。
date- 显示或设置日期和时间
在 Linux 命令行中,“date” 命令用于显示或设置系统的日期和时间。它可以显示当前日期和时间,也可以根据需要进行日期和时间的格式化输出。下面是 date 命令的一些常见用法和代表性的例子:
-
显示当前日期和时间:
date
例如:
date
显示当前的日期和时间,格式为 “星期 月 日 时:分:秒 时区 年份”。 -
显示当前日期和时间以特定格式:
date +"format"
例如:
date +"%Y-%m-%d %H:%M:%S"
显示当前的日期和时间,格式为 “年-月-日 时:分:秒”。 -
设置系统日期和时间:
sudo date -s "YYYY-MM-DD HH:MM:SS"
例如:
sudo date -s "2023-06-06 12:00:00"
将系统的日期和时间设置为指定的值。 -
显示当前日期:
date +"%Y-%m-%d"
例如:
date +"%Y-%m-%d"
显示当前的日期,格式为 “年-月-日”。 -
显示当前时间:
date +"%H:%M:%S"
例如:
date +"%H:%M:%S"
显示当前的时间,格式为 “时:分:秒”。
这些是 date 命令的一些常见用法和示例。date 命令可以帮助您查看和设置系统的日期和时间。您可以使用 man date
命令查看更详细的文档和使用说明。
cal- 显示当前月份的日历
在 Linux 命令行中,“cal” 命令用于显示日历。它可以显示当前月份的日历,也可以显示指定月份或年份的日历。下面是 cal 命令的一些常见用法和代表性的例子:
-
显示当前月份的日历:
cal
例如:
cal
显示当前月份的日历,包括当月的所有日期。 -
显示指定月份的日历:
cal month year
例如:
cal 6 2023
显示 2023 年 6 月的日历。 -
显示指定年份的日历:
cal year
例如:
cal 2023
显示 2023 年的日历,包括该年的所有月份。 -
显示日历并突出显示当前日期:
cal -h
例如:
cal -h
显示当前月份的日历,并使用特殊符号突出显示当前日期。 -
显示日历以周日为一周的第一天:
cal -s 1
例如:
cal -s 1
显示当前月份的日历,并将周日作为一周的第一天。
这些是 cal 命令的一些常见用法和示例。cal 命令可以帮助您查看日历,以便查看特定月份或年份的日期。您可以使用 man cal
命令查看更详细的文档和使用说明。
6 搜索文件命令
which - 查找并显示命令的绝对路径
在 Linux 命令行中,“which” 命令用于查找给定命令的可执行文件路径。它可以帮助您确定特定命令在系统中的位置。下面是 “which” 命令的一些常见用法和代表性的例子:
-
显示给定命令的可执行文件路径:
which command_name
例如:
which ls
将显示 “ls” 命令的可执行文件路径。 -
显示多个命令的可执行文件路径:
which command1 command2
例如:
which ls cat
将显示 “ls” 和 “cat” 命令的可执行文件路径。 -
显示命令的别名路径:
which -a command_name
例如:
which -a ls
将显示 “ls” 命令的所有可执行文件路径,包括可能存在的别名。 -
搜索命令的可执行文件路径,并忽略别名:
which --skip-alias command_name
例如:
which --skip-alias ls
将搜索 “ls” 命令的可执行文件路径,而忽略别名。
这些是 “which” 命令的一些常见用法和示例。“which” 命令可以帮助您查找命令的可执行文件路径,从而确定命令在系统中的位置。您可以使用 man which
命令查看更详细的文档和使用说明。
find- 在指定目录下查找文件和目录
在 Linux 命令行中,“find” 命令用于在指定目录及其子目录中查找符合条件的文件和目录。它提供了强大的搜索功能和多种搜索条件的选项。下面是 “find” 命令的一些常见用法和代表性的例子:
-
在当前目录及其子目录中查找文件:
find . -name "filename"
例如:
find . -name "*.txt"
将在当前目录及其子目录中查找所有扩展名为 “.txt” 的文件。 -
按文件类型查找文件:
find . -type type
例如:
find . -type d
将在当前目录及其子目录中查找所有目录。 -
根据文件大小查找文件:
find . -size [+/-]size_unit
例如:
find . -size +1M
将在当前目录及其子目录中查找大小大于 1MB 的文件。 -
根据文件修改时间查找文件:
find . -mtime [+/-]n
例如:
find . -mtime -7
将在当前目录及其子目录中查找最近 7 天内修改过的文件。 -
根据文件所有者查找文件:
find . -user username
例如:
find . -user john
将在当前目录及其子目录中查找所有属于用户 “john” 的文件。
这些是 “find” 命令的一些常见用法和示例。“find” 命令可以根据不同的条件帮助您查找文件和目录,以满足您的搜索需求。您可以使用 man find
命令查看更详细的文档和使用说明。
whereis - 查找二进制程序、源码和帮助页面的位置
在 Linux 命令行中,“whereis” 命令用于查找给定命令的二进制文件、源代码和帮助文档的位置。它可以帮助您找到命令相关的多个文件。下面是 “whereis” 命令的一些常见用法和代表性的例子:
-
显示给定命令的二进制文件、源代码和帮助文档位置:
whereis command_name
例如:
whereis ls
将显示 “ls” 命令的二进制文件、源代码和帮助文档的位置(如果有)。 -
只显示命令的二进制文件位置:
whereis -b command_name
例如:
whereis -b ls
将只显示 “ls” 命令的二进制文件位置。 -
只显示命令的源代码位置:
whereis -s command_name
例如:
whereis -s ls
将只显示 “ls” 命令的源代码位置(如果有)。
这些是 “whereis” 命令的一些常见用法和示例。“whereis” 命令可以帮助您找到命令相关的文件,包括二进制文件、源代码和帮助文档。您可以使用 man whereis
命令查看更详细的文档和使用说明。
locate- 快速查找文件数据库中指定的文件
在 Linux 命令行中,“locate” 命令用于在文件系统的数据库中快速查找符合条件的文件。它使用一个预先生成的文件索引,因此速度较快。下面是 “locate” 命令的一些常见用法和代表性的例子:
-
搜索包含关键字的文件:
locate keyword
例如:
locate myfile
将搜索文件名中包含 “myfile” 关键字的所有文件。 -
按正则表达式搜索文件:
locate -r regex_pattern
例如:
locate -r "^file\d+\.txt$"
将使用正则表达式搜索文件名符合指定模式的文件。 -
限制搜索结果的数量:
locate -n number keyword
例如:
locate -n 5 myfile
将搜索并显示包含 “myfile” 关键字的前 5 个文件。 -
更新文件数据库:
sudo updatedb
例如:
sudo updatedb
将更新文件数据库,以便 “locate” 命令能够搜索到最新的文件。
请注意,“locate” 命令使用预生成的文件数据库进行搜索,因此需要定期更新数据库以保持搜索结果的准确性。通常,系统会自动在后台定期更新数据库。如果您需要手动更新数据库,可以使用 sudo updatedb
命令。
7 用户管理命令
useradd- 创建新用户账号
在 Linux 命令行中,“useradd” 命令用于创建新的用户账号。它允许您在系统中添加新的用户,并设置相关的用户属性。下面是 “useradd” 命令的一些常见用法和代表性的例子:
-
创建一个新的用户账号:
useradd username
例如:
useradd john
将创建一个名为 “john” 的新用户账号。 -
创建用户时指定用户的主目录:
useradd -d /path/to/directory username
例如:
useradd -d /home/john john
将创建一个名为 “john” 的新用户账号,并将其主目录设置为 “/home/john”。 -
创建用户时指定用户的初始组:
useradd -g groupname username
例如:
useradd -g developers john
将创建一个名为 “john” 的新用户账号,并将其初始组设置为 “developers”。 -
创建用户时设置用户的登录Shell:
useradd -s /path/to/shell username
例如:
useradd -s /bin/bash john
将创建一个名为 “john” 的新用户账号,并将其登录Shell设置为 “/bin/bash”。
这些是 “useradd” 命令的一些常见用法和示例。“useradd” 命令允许您在 Linux 系统中创建新的用户账号,并设置相关的用户属性,如主目录、用户组和登录Shell。您可以使用 man useradd
命令查看更详细的文档和使用说明。
usermod- 修改用户账号的属性
在 Linux 命令行中,“usermod” 命令用于修改用户账号的属性和配置。它允许您对现有用户进行修改,如更改用户的用户名、主目录、用户组等。下面是 “usermod” 命令的一些常见用法和代表性的例子:
-
修改用户的用户名:
usermod -l new_username old_username
例如:
usermod -l jsmith john
将将用户 “john” 的用户名修改为 “jsmith”。 -
修改用户的主目录:
usermod -d /new/path/to/directory username
例如:
usermod -d /home/jsmith jsmith
将将用户 “jsmith” 的主目录修改为 “/home/jsmith”。 -
修改用户的登录Shell:
usermod -s /path/to/shell username
例如:
usermod -s /bin/zsh jsmith
将将用户 “jsmith” 的登录Shell修改为 “/bin/zsh”。 -
修改用户的附加组:
usermod -G group1,group2 username
例如:
usermod -G admins,developers jsmith
将将用户 “jsmith” 添加到 “admins” 和 “developers” 组。 -
修改用户的密码过期时间:
usermod -e YYYY-MM-DD username
例如:
usermod -e 2023-12-31 jsmith
将将用户 “jsmith” 的密码过期时间设置为 2023 年 12 月 31 日。
这些是 “usermod” 命令的一些常见用法和示例。“usermod” 命令允许您对现有用户账号进行修改,包括用户名、主目录、用户组、登录Shell 等属性的更改。您可以使用 man usermod
命令查看更详细的文档和使用说明。
userdel- 删除用户账号
在 Linux 命令行中,“userdel” 命令用于删除用户账号及其相关的文件和目录。它允许您从系统中移除不再需要的用户账号。请注意,使用 “userdel” 命令删除用户账号是一个潜在的危险操作,请谨慎使用。下面是 “userdel” 命令的一些常见用法和代表性的例子:
-
删除用户账号:
userdel username
例如:
userdel jsmith
将删除名为 “jsmith” 的用户账号。 -
删除用户账号及其主目录:
userdel -r username
例如:
userdel -r jsmith
将删除名为 “jsmith” 的用户账号,并连同其主目录一起删除。 -
强制删除用户账号及其相关文件(忽略警告):
userdel -f username
例如:
userdel -f jsmith
将强制删除名为 “jsmith” 的用户账号,忽略任何警告信息。 -
删除用户账号的同时移动其文件到另一个目录:
userdel -m -r -d /new/path/to/directory username
例如:
userdel -m -r -d /backup/jsmith jsmith
将删除名为 “jsmith” 的用户账号,并将其主目录中的文件移动到 “/backup/jsmith” 目录下。
这些是 “userdel” 命令的一些常见用法和示例。请注意,在删除用户账号之前,应该仔细考虑并备份相关的文件和数据。使用 man userdel
命令可以查看更详细的文档和使用说明。
groupadd - 创建新用户组
在 Linux 命令行中,“groupadd” 命令用于创建新的用户组。它允许您在系统中添加新的用户组,并设置相关的组属性。下面是 “groupadd” 命令的一些常见用法和代表性的例子:
-
创建一个新的用户组:
groupadd groupname
例如:
groupadd developers
将创建一个名为 “developers” 的新用户组。 -
创建用户组时指定组ID(GID):
groupadd -g group_id groupname
例如:
groupadd -g 1001 developers
将创建一个名为 “developers” 的新用户组,并将其组ID设置为 1001。 -
创建用户组时指定初始用户(组的所有者):
groupadd -o -g group_id -r groupname
例如:
groupadd -o -g 1001 -r developers
将创建一个名为 “developers” 的新用户组,并将其组ID设置为 1001,并且允许重复的组ID。
这些是 “groupadd” 命令的一些常见用法和示例。“groupadd” 命令允许您在 Linux 系统中创建新的用户组,并设置相关的组属性,如组ID等。您可以使用 man groupadd
命令查看更详细的文档和使用说明。
passwd- 设置用户密码
在 Linux 命令行中,“passwd” 命令用于更改用户的密码。它允许用户更改自己的密码或管理员更改其他用户的密码。下面是 “passwd” 命令的一些常见用法和代表性的例子:
-
更改当前用户的密码:
passwd
执行此命令后,系统会提示您输入当前用户的密码,并要求输入新的密码。
-
更改其他用户的密码(需要管理员权限):
sudo passwd username
例如:
sudo passwd john
将允许管理员更改用户 “john” 的密码。执行此命令后,系统会提示管理员输入密码,并要求输入新的密码。 -
强制用户在下次登录时更改密码:
sudo passwd -e username
例如:
sudo passwd -e john
将强制用户 “john” 在下次登录时更改密码。 -
设置密码过期时间:
sudo passwd -x days username
例如:
sudo passwd -x 30 john
将设置用户 “john” 的密码在 30 天后过期。
这些是 “passwd” 命令的一些常见用法和示例。通过使用 “passwd” 命令,用户可以更改自己的密码或管理员可以更改其他用户的密码。您可以使用 man passwd
命令查看更详细的文档和使用说明。
chage- 修改用户账号的密码过期信息
在 Linux 命令行中,“chage” 命令用于修改用户账号的密码过期信息。它允许管理员管理用户账号的密码过期策略,包括密码过期时间、最大使用期限、最小使用期限等。下面是 “chage” 命令的一些常见用法和代表性的例子:
-
查看用户密码过期信息:
chage -l username
例如:
chage -l jsmith
将显示用户 “jsmith” 的密码过期信息,包括最后更改密码的日期、密码过期日期等。 -
设置密码过期时间(以天数为单位):
chage -M days username
例如:
chage -M 90 jsmith
将设置用户 “jsmith” 的密码过期时间为 90 天。 -
禁用密码过期:
chage -E -1 username
例如:
chage -E -1 jsmith
将禁用用户 “jsmith” 的密码过期功能。 -
设置账号的最大使用期限:
chage -M days username
例如:
chage -M 365 jsmith
将设置用户 “jsmith” 的账号最大使用期限为 365 天。
这些是 “chage” 命令的一些常见用法和示例。通过使用 “chage” 命令,管理员可以管理用户账号的密码过期策略和其他相关信息。您可以使用 man chage
命令查看更详细的文档和使用说明。
id- 显示用户或组的身份信息
在 Linux 命令行中,“id” 命令用于显示当前用户或指定用户的身份标识信息。它会显示用户的用户ID(UID)、组ID(GID)以及附属组ID。下面是 “id” 命令的一些常见用法和代表性的例子:
-
显示当前用户的身份标识信息:
id
执行此命令后,系统会显示当前用户的用户ID、组ID以及附属组ID。
-
显示指定用户的身份标识信息:
id username
例如:
id jsmith
将显示用户 “jsmith” 的用户ID、组ID以及附属组ID。 -
显示用户的详细身份标识信息:
id -u -n -G username
例如:
id -u -n -G jsmith
将显示用户 “jsmith” 的用户ID、用户名以及所属的所有附属组。
这些是 “id” 命令的一些常见用法和示例。通过使用 “id” 命令,您可以查看用户的身份标识信息,包括用户ID、组ID以及附属组ID。您可以使用 man id
命令查看更详细的文档和使用说明。
su- 切换用户身份
在 Linux 命令行中,“su” 命令用于切换到其他用户身份或者切换到超级用户(root)身份。它允许用户在登录后切换到其他用户,同时也可以使用它来获取超级用户的权限。下面是 “su” 命令的一些常见用法和代表性的例子:
-
切换到其他用户身份:
su username
例如:
su jsmith
将切换到用户 “jsmith” 的身份。执行此命令后,系统会要求您输入该用户的密码。 -
切换到超级用户(root)身份:
su
或者
su -
执行这两个命令中的任意一个,将切换到超级用户(root)的身份。在切换到 root 身份后,系统会要求您输入 root 用户的密码。
-
切换到其他用户身份并执行命令:
su -c "command" username
例如:
su -c "ls -l" jsmith
将切换到用户 “jsmith” 的身份,并执行 “ls -l” 命令。 -
切换到其他用户身份并保留环境变量:
su -l username
例如:
su -l jsmith
将切换到用户 “jsmith” 的身份,并保留原始用户的环境变量。
这些是 “su” 命令的一些常见用法和示例。通过使用 “su” 命令,用户可以切换到其他用户身份或者切换到超级用户(root)身份。请注意,在切换到超级用户身份时要谨慎操作,以免造成系统安全问题。您可以使用 man su
命令查看更详细的文档和使用说明。
visudo- 编辑sudoers文件,控制sudo命令的使用权限
在 Linux 命令行中,“visudo” 命令用于编辑 “/etc/sudoers” 文件,它提供了一个安全的方式来编辑 sudoers 文件,以配置用户的权限和访问控制规则。sudoers 文件用于定义哪些用户或组可以以超级用户的权限执行特定的命令。下面是 “visudo” 命令的一些常见用法和代表性的例子:
-
打开 sudoers 文件进行编辑:
sudo visudo
执行此命令后,系统会使用默认的文本编辑器打开 sudoers 文件供您进行编辑。
-
检查 sudoers 文件的语法错误:
sudo visudo -c
例如:
sudo visudo -c
将检查 sudoers 文件的语法错误,并在检查完毕后给出相应的提示。 -
添加用户到 sudoers 文件:
sudo visudo
执行此命令后,在打开的 sudoers 文件中添加以下行来授权用户具有sudo权限:
username ALL=(ALL:ALL) ALL
将 “username” 替换为要授权的用户名。这样,该用户就可以使用 sudo 命令以超级用户的权限执行任意命令。
-
授权用户只能执行特定的命令:
sudo visudo
执行此命令后,在打开的 sudoers 文件中添加以下行来授权用户只能执行特定的命令:
username ALL=(ALL:ALL) /path/to/command
将 “username” 替换为要授权的用户名,将 “/path/to/command” 替换为用户允许执行的特定命令的路径。
这些是 “visudo” 命令的一些常见用法和示例。通过使用 “visudo” 命令,您可以安全地编辑 sudoers 文件,配置用户的权限和访问控制规则。请注意,在编辑 sudoers 文件时要小心,以免破坏文件的正确性导致系统出现问题。您可以使用 man visudo
命令查看更详细的文档和使用说明。
sudo- 以其他用户身份执行命令
在 Linux 命令行中,“sudo” 命令用于以其他用户的身份执行命令,通常是以超级用户(root)的权限执行特权操作。它允许授权的用户在不直接使用超级用户账户的情况下执行需要特殊权限的命令。下面是 “sudo” 命令的一些常见用法和代表性的例子:
-
以超级用户权限执行命令:
sudo command
例如:
sudo apt-get update
将使用超级用户的权限执行 “apt-get update” 命令。 -
以其他用户身份执行命令:
sudo -u username command
例如:
sudo -u jsmith ls -l
将以用户 “jsmith” 的身份执行 “ls -l” 命令。 -
使用其他用户的环境变量执行命令:
sudo -E command
例如:
sudo -E env
将使用当前用户的环境变量执行 “env” 命令。 -
在后台以超级用户权限执行命令:
sudo -b command
例如:
sudo -b apt-get upgrade
将在后台使用超级用户的权限执行 “apt-get upgrade” 命令。 -
切换到超级用户(root)身份:
sudo -i
执行此命令后,将切换到超级用户的身份,并打开一个新的 shell 会话。
这些是 “sudo” 命令的一些常见用法和示例。通过使用 “sudo” 命令,授权的用户可以以其他用户的身份执行命令,以实现特权操作而无需直接使用超级用户账户。请谨慎使用 “sudo” 命令,以避免意外的系统操作和安全风险。您可以使用 man sudo
命令查看更详细的文档和使用说明。
8 基础网络命令
telnet- 远程登录到另一台主机
在 Linux 命令行中,“telnet” 命令用于建立与远程主机的 Telnet 连接。Telnet 是一种远程登录协议,它允许用户通过网络远程登录到远程主机并执行命令。以下是 “telnet” 命令的一些常见用法和代表性的例子:
-
建立 Telnet 连接:
telnet hostname [port]
例如:
telnet example.com
将建立到 example.com 主机的默认 Telnet 连接。 -
指定端口号建立 Telnet 连接:
telnet hostname port
例如:
telnet example.com 22
将建立到 example.com 主机的 SSH 连接(SSH 默认端口为 22)。 -
使用 Telnet 连接发送命令:
telnet hostname [port] command
例如:
telnet example.com 80
连接到 example.com 的 HTTP 服务端口,并可以发送 HTTP 请求命令。 -
使用 Telnet 连接测试端口是否开放:
telnet hostname port
例如:
telnet example.com 443
可以测试 example.com 的 443 端口是否处于开放状态。 -
在 Telnet 会话中执行 Telnet 命令:
telnet hostname [port] telnet
例如:
telnet example.com
建立到 example.com 的 Telnet 连接后,可以在 Telnet 会话中继续使用telnet
命令建立到其他主机的 Telnet 连接。
这些是 “telnet” 命令的一些常见用法和示例。通过使用 Telnet 连接,您可以远程登录到其他主机并执行命令,或者测试远程主机的端口是否开放。请注意,在使用 Telnet 连接时要小心,因为它是以明文方式传输数据,不提供加密和安全性。建议在可能的情况下使用更安全的协议,如 SSH。您可以使用 man telnet
命令查看更详细的文档和使用说明。
ssh- 安全远程登录到另一台主机
在 Linux 命令行中,“ssh” 命令用于建立安全的远程登录连接。SSH(Secure Shell)是一种加密的网络协议,它允许用户通过网络远程登录到远程主机并执行命令。以下是 “ssh” 命令的一些常见用法和代表性的例子:
-
建立 SSH 连接:
ssh username@hostname
例如:
ssh jsmith@example.com
将以用户名 “jsmith” 连接到 example.com 主机。 -
指定端口号建立 SSH 连接:
ssh -p port username@hostname
例如:
ssh -p 2222 jsmith@example.com
将以用户名 “jsmith” 连接到 example.com 主机的 SSH 服务端口 2222。 -
使用密钥文件进行身份验证:
ssh -i private_key username@hostname
例如:
ssh -i ~/.ssh/id_rsa jsmith@example.com
将使用指定的私钥文件进行身份验证。 -
在 SSH 连接中执行命令:
ssh username@hostname command
例如:
ssh jsmith@example.com ls -l
将在 example.com 主机上执行 “ls -l” 命令。 -
拷贝文件到远程主机:
scp file username@hostname:destination
例如:
scp file.txt jsmith@example.com:/home/jsmith/
将文件 “file.txt” 拷贝到 example.com 主机的 jsmith 用户的 “/home/jsmith/” 目录下。
这些是 “ssh” 命令的一些常见用法和示例。通过使用 SSH 连接,您可以远程登录到其他主机并执行命令,或者在本地和远程主机之间进行安全的文件传输。SSH 提供了加密和身份验证机制,使远程连接更加安全。您可以使用 man ssh
命令查看更详细的文档和使用说明。
scp- 在本地主机和远程主机之间复制文件
在 Linux 命令行中,“scp” 命令用于在本地主机和远程主机之间进行安全的文件传输。SCP(Secure Copy)通过使用 SSH 协议进行加密,提供了对文件的安全拷贝。以下是 “scp” 命令的一些常见用法和代表性的例子:
-
从本地主机拷贝文件到远程主机:
scp local_file username@hostname:destination
例如:
scp file.txt jsmith@example.com:/home/jsmith/
将本地的 “file.txt” 文件拷贝到 example.com 主机的 jsmith 用户的 “/home/jsmith/” 目录下。 -
从远程主机拷贝文件到本地主机:
scp username@hostname:remote_file destination
例如:
scp jsmith@example.com:/var/log/syslog .
将 example.com 主机上的 “/var/log/syslog” 文件拷贝到当前目录下。 -
拷贝目录及其内容:
scp -r local_directory username@hostname:destination
例如:
scp -r mydir jsmith@example.com:/home/jsmith/
将本地的 “mydir” 目录及其内容拷贝到 example.com 主机的 jsmith 用户的 “/home/jsmith/” 目录下。 -
从远程主机拷贝文件到本地主机,并指定端口号:
scp -P port username@hostname:remote_file destination
例如:
scp -P 2222 jsmith@example.com:/var/log/syslog .
将 example.com 主机上的 “/var/log/syslog” 文件通过 SSH 服务端口 2222 拷贝到当前目录下。
这些是 “scp” 命令的一些常见用法和示例。通过使用 SCP 命令,您可以在本地主机和远程主机之间安全地拷贝文件和目录。SCP 使用 SSH 协议进行加密传输,提供了对数据的保护和身份验证。您可以使用 man scp
命令查看更详细的文档和使用说明。
wget- 下载文件或网页
在 Linux 命令行中,“wget” 命令用于下载文件或网页。它是一个非交互式的工具,可以通过 URL 从网络上获取文件。以下是 “wget” 命令的一些常见用法和代表性的例子:
-
下载单个文件:
wget URL
例如:
wget https://example.com/file.txt
将下载 “https://example.com/file.txt” 的文件到当前目录。 -
下载并保存为指定文件名:
wget -O filename URL
例如:
wget -O myfile.zip https://example.com/archive.zip
将下载 “https://example.com/archive.zip” 的文件并保存为 “myfile.zip”。 -
后台下载文件:
wget -b URL
例如:
wget -b https://example.com/bigfile.iso
将在后台下载 “https://example.com/bigfile.iso” 的文件。 -
递归下载整个网站:
wget -r URL
例如:
wget -r https://example.com
将递归下载 “https://example.com” 网站的所有页面和资源。 -
断点续传下载:
wget -c URL
例如:
wget -c https://example.com/bigfile.zip
将从上次下载中断的位置继续下载 “https://example.com/bigfile.zip” 的文件。
这些是 “wget” 命令的一些常见用法和示例。通过使用 wget,您可以方便地从网络上获取文件,支持下载单个文件、整个网站、后台下载以及断点续传等功能。您可以使用 man wget
命令查看更详细的文档和使用说明。
ping- 测试与另一台主机的网络连接
在 Linux 命令行中,“ping” 命令用于测试与目标主机之间的网络连接。它发送 ICMP Echo 请求到目标主机,并等待响应。以下是 “ping” 命令的一些常见用法和代表性的例子:
-
Ping 目标主机:
ping hostname
例如:
ping example.com
将向 “example.com” 发送 ICMP Echo 请求并显示响应。 -
Ping 指定次数:
ping -c count hostname
例如:
ping -c 5 example.com
将向 “example.com” 发送 5 个 ICMP Echo 请求并显示响应。 -
Ping 指定时间间隔:
ping -i interval hostname
例如:
ping -i 2 example.com
将向 “example.com” 发送 ICMP Echo 请求,每隔 2 秒发送一次。 -
Ping 持续发送请求:
ping -f hostname
例如:
ping -f example.com
将以持续的方式向 “example.com” 发送 ICMP Echo 请求,直到手动停止。 -
使用特定的数据包大小:
ping -s packetsize hostname
例如:
ping -s 1000 example.com
将发送数据包大小为 1000 字节的 ICMP Echo 请求。
这些是 “ping” 命令的一些常见用法和示例。通过使用 ping 命令,您可以测试与目标主机之间的网络连接,检查主机的可达性和延迟情况。ping 命令是网络故障排查中常用的工具之一。您可以使用 man ping
命令查看更详细的文档和使用说明。
route- 查看和管理网络路由表
在 Linux 命令行中,“route” 命令用于查看和配置系统的 IP 路由表。它可以显示和操作网络路由信息,包括默认网关、子网路由和静态路由等。以下是 “route” 命令的一些常见用法和代表性的例子:
-
查看当前路由表:
route -n
该命令将显示系统当前的 IP 路由表,包括目标网络、网关、子网掩码和接口等信息。
-
添加默认网关:
route add default gw gateway
例如:
route add default gw 192.168.1.1
将添加一个默认网关为 “192.168.1.1”。 -
添加子网路由:
route add -net network netmask gateway
例如:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1
将添加一个针对子网 “192.168.2.0” 的路由,网关为 “192.168.1.1”。 -
删除路由:
route del target
例如:
route del default
将删除默认网关。 -
查看接口的路由表:
route -n -A inet -e
该命令将显示指定接口的路由表,包括目标网络、网关、子网掩码和接口等信息。
这些是 “route” 命令的一些常见用法和示例。通过使用 route 命令,您可以查看和配置系统的 IP 路由表,添加或删除路由,以及管理网络连接的路由信息。您可以使用 man route
命令查看更详细的文档和使用说明。
ifconfig - 显示和配置网络接口信息
在 Linux 命令行中,“ifconfig” 命令用于配置和显示网络接口的信息,包括 IP 地址、子网掩码、MAC 地址和网络状态等。它还可以用于启用或禁用网络接口。以下是 “ifconfig” 命令的一些常见用法和代表性的例子:
-
显示所有网络接口信息:
ifconfig
该命令将显示系统中所有网络接口的详细信息,包括接口名称、IP 地址、MAC 地址、状态等。
-
显示指定网络接口信息:
ifconfig interface
例如:
ifconfig eth0
将显示名为 “eth0” 的网络接口的详细信息。 -
启用网络接口:
ifconfig interface up
例如:
ifconfig eth0 up
将启用名为 “eth0” 的网络接口。 -
禁用网络接口:
ifconfig interface down
例如:
ifconfig eth0 down
将禁用名为 “eth0” 的网络接口。 -
配置 IP 地址和子网掩码:
ifconfig interface ip_address netmask subnet_mask
例如:
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
将为 “eth0” 接口配置 IP 地址为 “192.168.1.100”,子网掩码为 “255.255.255.0”。
这些是 “ifconfig” 命令的一些常见用法和示例。通过使用 ifconfig 命令,您可以查看和配置系统中的网络接口信息,启用或禁用接口,以及配置 IP 地址和子网掩码等。然而,需要注意的是,随着现代 Linux 系统的发展,ip 命令已经逐渐取代了 ifconfig 命令。因此,在新的 Linux 发行版中,推荐使用 ip 命令来代替 ifconfig。您可以使用 man ifconfig
命令查看更详细的文档和使用说明。
ifup- 启动网络接口
在 Linux 命令行中,“ifup” 命令用于启用网络接口。它会根据网络配置文件中的配置信息来启动指定的网络接口。以下是 “ifup” 命令的一些常见用法和代表性的例子:
-
启用指定网络接口:
ifup interface
例如:
ifup eth0
将启用名为 “eth0” 的网络接口。 -
启用所有配置的网络接口:
ifup -a
该命令将启用系统中所有在网络配置文件中配置的网络接口。
-
指定网络接口的配置文件:
ifup -i filename interface
例如:
ifup -i /etc/network/interfaces eth0
将使用指定的配置文件 “/etc/network/interfaces” 启用名为 “eth0” 的网络接口。
这些是 “ifup” 命令的一些常见用法和示例。通过使用 ifup 命令,您可以根据网络配置文件中的配置信息来启用指定的网络接口。需要注意的是,ifup 命令通常与网络配置管理工具一起使用,如在 Debian 系统中使用的 ifupdown 工具。这些工具提供更高级的网络配置功能,如静态 IP 地址、DHCP、DNS 设置等。您可以参考您所使用的 Linux 发行版的文档来了解更多关于 ifup 命令和网络配置管理工具的信息。
ifdown - 关闭网络接口
在 Linux 命令行中,“ifdown” 命令用于禁用网络接口。它会根据网络配置文件中的配置信息来停止指定的网络接口。以下是 “ifdown” 命令的一些常见用法和代表性的例子:
-
禁用指定网络接口:
ifdown interface
例如:
ifdown eth0
将禁用名为 “eth0” 的网络接口。 -
禁用所有配置的网络接口:
ifdown -a
该命令将停止系统中所有在网络配置文件中配置的网络接口。
-
指定网络接口的配置文件:
ifdown -i filename interface
例如:
ifdown -i /etc/network/interfaces eth0
将使用指定的配置文件 “/etc/network/interfaces” 禁用名为 “eth0” 的网络接口。
这些是 “ifdown” 命令的一些常见用法和示例。通过使用 ifdown 命令,您可以根据网络配置文件中的配置信息来禁用指定的网络接口。需要注意的是,ifdown 命令通常与网络配置管理工具一起使用,如在 Debian 系统中使用的 ifupdown 工具。这些工具提供更高级的网络配置功能,如静态 IP 地址、DHCP、DNS 设置等。您可以参考您所使用的 Linux 发行版的文档来了解更多关于 ifdown 命令和网络配置管理工具的信息。
netstat- 显示网络连接、路由表和网络统计信息
在 Linux 命令行中,“netstat” 命令用于显示网络连接、路由表和网络接口等相关信息。它可以提供有关网络连接状态、协议统计、路由表和网络接口的详细信息。以下是 “netstat” 命令的一些常见用法和代表性的例子:
-
显示所有网络连接信息:
netstat -a
该命令将显示所有的网络连接信息,包括监听和已建立的连接。
-
显示指定协议的连接信息:
netstat -t netstat -u
-t
参数用于显示 TCP 连接信息,-u
参数用于显示 UDP 连接信息。 -
显示监听状态的连接信息:
netstat -l
该命令将显示所有处于监听状态的连接信息。
-
显示路由表信息:
netstat -r
该命令将显示系统的路由表信息,包括目标网络、网关、接口和路由标志等。
-
显示网络接口信息:
netstat -i
该命令将显示系统的网络接口信息,包括接口名称、接收和发送的数据包数量等。
这些是 “netstat” 命令的一些常见用法和示例。通过使用 netstat 命令,您可以获取有关网络连接、路由表和网络接口等方面的详细信息。需要注意的是,netstat 命令在最新版本的 Linux 中已逐渐被 ss 命令替代,因为 ss 命令提供更快速和更详细的输出。您可以参考您所使用的 Linux 发行版的文档来了解更多关于 netstat 命令和 ss 命令的信息。
ss- 显示当前套接字连接信息
在 Linux 命令行中,“ss” 命令用于显示网络连接、套接字统计和路由表等相关信息。它是 “netstat” 命令的现代替代工具,提供更快速和更详细的输出。以下是 “ss” 命令的一些常见用法和代表性的例子:
-
显示所有网络连接信息:
ss -a
该命令将显示所有的网络连接信息,包括监听和已建立的连接。
-
显示指定协议的连接信息:
ss -t ss -u
-t
参数用于显示 TCP 连接信息,-u
参数用于显示 UDP 连接信息。 -
显示监听状态的连接信息:
ss -l
该命令将显示所有处于监听状态的连接信息。
-
显示套接字统计信息:
ss -s
该命令将显示套接字的统计信息,包括各个协议的统计数据。
-
显示路由表信息:
ss -r
该命令将显示系统的路由表信息,包括目标网络、网关、接口和路由标志等。
-
显示进程与套接字关联信息:
ss -p
该命令将显示每个套接字关联的进程信息。
这些是 “ss” 命令的一些常见用法和示例。通过使用 ss 命令,您可以获取有关网络连接、套接字统计和路由表等方面的详细信息。相较于 netstat 命令,ss 命令提供更快速和更详细的输出,并支持更多的选项和过滤条件。您可以参考您所使用的 Linux 发行版的文档来了解更多关于 ss 命令的信息。
9 深入网络命令
nmap- 网络扫描工具,用于探测和识别网络上的主机和服务
在 Linux 命令行中,“nmap” 是一个功能强大的网络扫描工具,用于探测和识别网络上的主机和服务。它可以提供有关目标主机的端口状态、操作系统类型、开放的服务等信息。以下是 “nmap” 命令的一些常见用法和代表性的例子:
-
扫描单个主机的常见端口:
nmap <target>
<target>
是要扫描的目标主机的 IP 地址或主机名。该命令将扫描目标主机上的常见端口,并报告端口的状态。 -
扫描多个主机的常见端口:
nmap <target1> <target2> <target3> ...
在命令中指定多个目标主机,用空格分隔。该命令将同时扫描多个目标主机上的常见端口。
-
扫描指定端口范围:
nmap -p <port-range> <target>
-p
参数用于指定要扫描的端口范围,可以是单个端口号或端口范围,例如 “80”、“1-100”。该命令将只扫描指定范围内的端口。 -
扫描指定的端口类型:
nmap -p <port-type> <target>
-p
参数后跟一个端口类型,如 “U:53,111,137,T:21-25,80”。该命令将扫描指定类型的端口,“U” 表示 UDP 端口,“T” 表示 TCP 端口。 -
扫描所有端口(全面扫描):
nmap -p- <target>
-p-
参数用于扫描目标主机上的所有端口。该命令将进行全面的端口扫描。 -
扫描操作系统类型:
nmap -O <target>
-O
参数用于进行操作系统探测。该命令将尝试识别目标主机所运行的操作系统类型。 -
扫描服务和版本信息:
nmap -sV <target>
-sV
参数用于进行服务和版本扫描。该命令将尝试识别目标主机上开放的服务和相应的版本信息。
这些是 “nmap” 命令的一些常见用法和示例。请注意,在使用 “nmap” 命令时,请确保您对要扫描的目标主机具有合法的权限,并遵守适用的法律和政策。 “nmap” 是一个功能强大的工具,可以帮助您了解网络上主机和服务的情况,但也需要
lsof- 光盘映像文件创建和编辑工具
在 Linux 命令行中,“lsof” 是一个用于显示打开文件和进程信息的工具。它可以列出当前系统中打开的文件、网络连接和相关的进程信息。以下是 “lsof” 命令的一些常见用法和代表性的例子:
-
列出所有打开的文件:
lsof
这个简单的命令将列出系统中当前打开的所有文件,包括普通文件、目录、设备文件、网络连接等。
-
列出指定进程打开的文件:
lsof -p <PID>
使用 “-p” 参数和进程 ID(PID),可以列出指定进程打开的所有文件。例如,
lsof -p 1234
将列出进程 ID 为 1234 的进程打开的文件。 -
列出指定用户打开的文件:
lsof -u <username>
使用 “-u” 参数和用户名,可以列出指定用户打开的所有文件。例如,
lsof -u john
将列出用户名为 “john” 的用户打开的文件。 -
列出指定文件的打开者:
lsof <file>
在命令中指定文件的路径和名称,可以列出打开该文件的进程和用户信息。例如,
lsof /var/log/syslog
将列出打开 “/var/log/syslog” 文件的进程信息。 -
列出网络连接:
lsof -i
使用 “-i” 参数,可以列出系统上的网络连接信息,包括 TCP、UDP 和 RAW 协议的连接。
-
列出指定端口的打开者:
lsof -i :<port>
使用 “-i” 参数和端口号,可以列出使用指定端口的进程和文件信息。例如,
lsof -i :80
将列出使用端口 80 的进程信息。
这些是 “lsof” 命令的一些常见用法和示例。请注意,在使用 “lsof” 命令时,可能需要以 root 用户或具有适当权限的用户身份运行才能查看某些文件和进程的信息。
mail - 发送邮件到指定的用户或邮件列表
在 Linux 命令行中,“mail” 是一个用于发送和接收电子邮件的基本命令行工具。它允许你发送电子邮件消息给其他用户或外部邮件服务器,并接收来自其他用户或邮件服务器的邮件。以下是 “mail” 命令的一些常见用法和代表性的例子:
-
发送邮件给其他用户:
mail -s "Subject" username
使用 “-s” 参数指定邮件主题,然后输入邮件正文。当你按下 Ctrl+D 结束输入时,邮件将被发送给指定的用户名。你可以在邮件正文中输入多行文本,并使用 Ctrl+D 结束。
-
发送邮件给外部邮件服务器:
echo "Message" | mail -s "Subject" recipient@example.com
使用管道符(|)将文本消息发送给 “mail” 命令,并使用 “-s” 参数指定邮件主题。邮件将被发送到指定的收件人邮箱地址。
-
查看收件箱中的邮件:
mail
这个简单的命令将显示你的收件箱中的邮件列表。你可以使用箭头键浏览邮件列表,并选择特定的邮件查看详细内容。
-
查看邮件的详细内容:
mail -f mailbox
使用 “-f” 参数和邮箱文件名,可以打开指定的邮箱文件,并查看邮件的详细内容。例如,
mail -f /var/mail/username
将打开名为 “username” 的用户邮箱文件。 -
删除邮件:
mail -d message_number
使用 “-d” 参数和邮件编号,可以删除收件箱中的特定邮件。邮件编号可以在查看邮件列表时获得。
这些是 “mail” 命令的一些常见用法和示例。请注意,使用 “mail” 命令发送和接收邮件通常需要系统配置正确,并且邮件服务器的设置和访问权限正确配置。
mutt- 命令行邮件客户端,用于查看、发送和管理电子邮件
在 Linux 命令行中,“mutt” 是一个功能强大的文本模式邮件客户端工具,它提供了发送、接收和管理电子邮件的功能。下面是一些常见的 “mutt” 命令的用法和代表性的例子:
-
启动 Mutt:
mutt
这个简单的命令将启动 Mutt 邮件客户端。
-
查看收件箱:
mutt
在 Mutt 中,你将看到收件箱的邮件列表。使用上下箭头键来浏览邮件列表。按下 Enter 键可以查看选定邮件的详细内容。
-
发送邮件:
mutt -s "Subject" recipient@example.com < message.txt
使用 “-s” 参数指定邮件主题,通过重定向
<
将邮件正文从文本文件中读取。邮件将被发送到指定的收件人邮箱地址。 -
回复邮件:
mutt -R
使用 “-R” 参数进入回复模式,你可以选择要回复的邮件,然后编辑回复的内容。
-
删除邮件:
mutt -d message_number
使用 “-d” 参数和邮件编号,可以删除收件箱中的特定邮件。邮件编号可以在查看邮件列表时获得。
-
附件操作:
- 添加附件:
使用 “-a” 参数指定要添加的附件文件。邮件将包含指定的附件,并发送到收件人。mutt -a attachment.txt -- recipient@example.com
- 查看附件:
在 Mutt 中,当你选择一个包含附件的邮件时,你可以按下v
键来查看附件,并选择保存或打开附件。 - 保存附件:
在 Mutt 中,当你选择一个包含附件的邮件时,你可以按下s
键来选择保存附件,并指定保存的目录和文件名。
- 添加附件:
这些是 “mutt” 命令的一些常见用法和示例。Mutt 提供了丰富的功能和配置选项,可以通过修改配置文件来自定义客户端的行为。请注意,使用 Mutt 发送和接收邮件通常需要系统配置正确,并且邮件服务器的设置和访问权限正确配置。
nslookup- 查询域名服务器,获取主机名或 IP 地址的信息
在 Linux 命令行中,“nslookup” 是一个用于查询 DNS(Domain Name System)信息的实用工具。它可以用来查找域名的 IP 地址、反向查找 IP 地址的域名,以及获取其他与域名解析相关的信息。下面是一些常见的 “nslookup” 命令的用法和代表性的例子:
-
查询域名的 IP 地址:
nslookup example.com
这个命令将查询域名 “example.com” 的 IP 地址,并显示结果。
-
查询指定类型的 DNS 记录:
nslookup -type=mx example.com
使用 “-type” 参数指定要查询的记录类型,例如 MX 记录(邮件交换记录)。这个命令将显示域名 “example.com” 的 MX 记录。
-
反向查找 IP 地址的域名:
nslookup 192.0.2.1
这个命令将查询 IP 地址 “192.0.2.1” 对应的域名,并显示结果。
-
设置特定的 DNS 服务器:
nslookup example.com 8.8.8.8
使用上述命令,你可以在查询过程中指定要使用的 DNS 服务器。上面的例子将使用 Google 的公共 DNS 服务器(8.8.8.8)进行查询。
-
交互式模式:
nslookup > set type=ns > example.com
这个示例演示了如何进入交互式模式并设置查询类型。首先,输入 “nslookup” 命令进入交互模式。然后,使用 “set type” 命令设置查询类型为 NS 记录(域名服务器记录)。最后,输入要查询的域名,它将显示域名的 NS 记录。
这些是 “nslookup” 命令的一些常见用法和示例。它是一个有用的工具,可用于进行 DNS 相关的查询和故障排除。请注意,在某些 Linux 发行版中,“nslookup” 命令可能已被替代为 “host” 或 “dig” 命令,这些命令也可以用于执行类似的 DNS 查询操作。
dig- DNS(域名系统)查询工具,用于获取域名相关信息
在 Linux 命令行中,“dig”(Domain Information Groper)是一个常用的 DNS(Domain Name System)工具,用于查询域名解析相关的信息。它提供了丰富的选项和功能,可以查询域名的各种记录类型、指定 DNS 服务器、执行递归或迭代查询等。下面是一些常见的 “dig” 命令的用法和代表性的例子:
-
查询域名的 A 记录(IPv4 地址):
dig example.com A
这个命令将查询域名 “example.com” 的 A 记录,并显示结果。
-
查询指定类型的 DNS 记录:
dig example.com MX
使用 “dig” 命令可以查询指定类型的 DNS 记录。这个例子将查询域名 “example.com” 的 MX 记录(邮件交换记录)。
-
查询域名的 AAAA 记录(IPv6 地址):
dig example.com AAAA
这个命令将查询域名 “example.com” 的 AAAA 记录(IPv6 地址)。
-
查询域名的 NS 记录(域名服务器记录):
dig example.com NS
这个命令将查询域名 “example.com” 的 NS 记录。
-
查询指定 DNS 服务器:
dig example.com @8.8.8.8
使用 “@DNS_IP” 参数可以指定要查询的 DNS 服务器。上面的例子将使用 Google 的公共 DNS 服务器(8.8.8.8)进行查询。
-
执行递归查询:
dig example.com +recurse
使用 “+recurse” 参数可以执行递归查询。递归查询会从根 DNS 服务器开始,一直追踪到目标域名的解析结果。
这些是 “dig” 命令的一些常见用法和示例。它是一个功能强大的工具,可用于深入了解域名解析和进行 DNS 相关的调试和故障排除。使用不同的选项和参数,你可以根据需要定制查询。
host- 查询主机名或 IP 地址的 DNS 信息
在 Linux 命令行中,“host” 命令用于查询域名解析相关的信息。它可以通过给定的域名或 IP 地址查询相关的 DNS 记录,例如 A 记录、CNAME 记录、MX 记录等。下面是一些常见的 “host” 命令的用法和代表性的例子:
-
查询域名的 A 记录(IPv4 地址):
host example.com
这个命令将查询域名 “example.com” 的 A 记录,并显示与之关联的 IPv4 地址。
-
查询域名的 AAAA 记录(IPv6 地址):
host -t AAAA example.com
使用 “-t” 参数指定查询的记录类型,这个例子将查询域名 “example.com” 的 AAAA 记录(IPv6 地址)。
-
查询指定类型的 DNS 记录:
host -t MX example.com
使用 “-t” 参数指定查询的记录类型,这个例子将查询域名 “example.com” 的 MX 记录(邮件交换记录)。
-
查询指定 DNS 服务器的结果:
host example.com ns1.example.com
在这个例子中,我们指定了要查询的 DNS 服务器为 “ns1.example.com”。命令将向该 DNS 服务器发送查询请求并显示结果。
-
查询域名的反向解析(PTR 记录):
host 192.0.2.1
这个命令将查询 IP 地址 “192.0.2.1” 的反向解析记录,显示与之关联的域名。
这些是 “host” 命令的一些常见用法和示例。它是一个简单而实用的工具,用于快速查询域名解析相关的信息。你可以根据需要使用不同的选项和参数来定制查询,以满足特定的需求。
traceroute- 跟踪数据包在网络上的路由路径
在 Linux 命令行中,“traceroute” 命令用于跟踪数据包在 IP 网络上的路径。它通过发送一系列的数据包,每个数据包的 TTL(Time to Live)逐渐增加,以确定到达目标主机的路径和每个中间节点的延迟。下面是一些常见的 “traceroute” 命令的用法和代表性的例子:
-
基本的 traceroute 命令:
traceroute example.com
这个命令将跟踪到达域名 “example.com” 的路径,并显示每个中间节点的 IP 地址和延迟信息。
-
指定最大跃点数:
traceroute -m 30 example.com
使用 “-m” 参数可以指定最大的跃点数。这个例子将限制跟踪的跃点数为 30。
-
使用 ICMP 数据包:
traceroute -I example.com
使用 “-I” 参数可以指定使用 ICMP 数据包进行跟踪。这个例子将使用 ICMP 数据包而不是默认的 UDP 数据包。
-
指定端口号:
traceroute -p 80 example.com
使用 “-p” 参数可以指定目标端口号。这个例子将跟踪到达域名 “example.com” 上端口号为 80 的路径。
-
显示每个节点的详细信息:
traceroute -A example.com
使用 “-A” 参数可以显示每个中间节点的 AS(Autonomous System)号码和 AS 名称。
这些是 “traceroute” 命令的一些常见用法和示例。通过跟踪数据包的路径和延迟,它可以帮助诊断网络连接问题,并提供有关到达目标主机所经过的中间节点的信息。请注意,由于网络环境的变化,跟踪结果可能会有所不同。你可以根据需要使用不同的选项和参数来定制跟踪过程,以满足特定的需求。
tcpdump- 抓取网络数据包,并显示其内容和详细信息
在 Linux 命令行中,“tcpdump” 命令用于捕获和分析网络数据包。它可以实时地监听网络接口,显示捕获到的数据包的详细信息,包括源地址、目标地址、协议类型、端口号等。下面是一些常见的 “tcpdump” 命令的用法和代表性的例子:
-
监听指定网络接口:
tcpdump -i eth0
这个命令将在接口 “eth0” 上监听并显示捕获到的数据包。
-
指定捕获数据包的数量:
tcpdump -c 10
使用 “-c” 参数可以指定捕获的数据包数量。这个例子将只捕获并显示前 10 个数据包。
-
显示详细的数据包信息:
tcpdump -v
使用 “-v” 参数可以显示更详细的数据包信息,包括协议头部的各个字段。
-
过滤指定源/目标 IP 地址的数据包:
tcpdump src 192.168.1.10 tcpdump dst 192.168.1.20
这些命令将只显示源 IP 地址为 “192.168.1.10” 或目标 IP 地址为 “192.168.1.20” 的数据包。
-
过滤指定端口号的数据包:
tcpdump port 80 tcpdump udp port 53
这些命令将只显示目标或源端口号为 80 或 UDP 端口号为 53 的数据包。
-
保存捕获的数据包到文件:
tcpdump -w capture.pcap
使用 “-w” 参数可以将捕获到的数据包保存到指定的文件中。你可以在之后使用其他工具对这些数据包进行分析。
这些是 “tcpdump” 命令的一些常见用法和示例。它是一个强大的网络抓包工具,可用于网络故障排除、网络安全分析和网络流量监控等方面。请注意,使用 “tcpdump” 命令需要以 root 权限运行,或者使用适当的用户权限来访问网络接口。同时,需要注意保护捕获到的数据包的隐私和安全性。
10 磁盘和文件系统
mount- 挂载文件系统或设备到指定的挂载点
在 Linux 命令行中,“mount” 命令用于将文件系统挂载到指定的挂载点,使其可被访问和使用。它可以用于挂载本地文件系统、网络文件系统(如 NFS、SMB)以及其他类型的存储设备。下面是一些常见的 “mount” 命令的用法和代表性的例子:
-
挂载本地文件系统:
mount /dev/sdb1 /mnt
这个命令将将设备 “/dev/sdb1” 上的文件系统挂载到 “/mnt” 目录。通过这个挂载点,你可以访问和操作该文件系统中的文件。
-
挂载网络文件系统(NFS):
mount -t nfs 192.168.1.100:/share /mnt/nfs
这个命令将将位于 IP 地址 “192.168.1.100” 上的 NFS 共享目录 “/share” 挂载到 “/mnt/nfs” 目录。你可以通过 “/mnt/nfs” 访问和操作共享的文件。
-
挂载网络文件系统(SMB):
mount -t cifs //192.168.1.200/share /mnt/smb -o username=user,password=pass
这个命令将将位于 IP 地址 “192.168.1.200” 上的 SMB 共享目录 “/share” 挂载到 “/mnt/smb” 目录。使用 “-o” 参数提供用户名和密码来进行身份验证。
-
以只读方式挂载文件系统:
mount -o ro /dev/sdb1 /mnt
使用 “-o” 参数指定 “ro”(read-only)选项,以只读方式挂载文件系统。这样,该文件系统将只能被读取,而不能进行写操作。
-
挂载后自动检测文件系统类型:
mount -a
这个命令将根据 “/etc/fstab” 文件中的配置,自动挂载所有未挂载的文件系统。它会自动检测文件系统类型,并使用相应的挂载选项进行挂载。
这些是 “mount” 命令的一些常见用法和示例。它是管理文件系统挂载的重要工具,允许你将不同类型的存储设备和文件系统连接到文件系统树中,以便访问和使用它们的内容。请注意,使用 “mount” 命令通常需要 root 权限或适当的用户权限。同时,要确保在挂载和卸载文件系统时,遵循正确的操作步骤,以防止数据损坏或丢失。
umount - 卸载已挂载的文件系统或设备
在 Linux 命令行中,“umount” 命令用于卸载已挂载的文件系统或设备。它允许你从文件系统树中移除挂载点,以便安全地断开与文件系统或设备的连接。下面是一些常见的 “umount” 命令的用法和代表性的例子:
-
卸载文件系统:
umount /mnt
这个命令将卸载挂载点 “/mnt” 上的文件系统。确保在执行卸载操作前,没有任何进程正在使用该文件系统。
-
强制卸载文件系统:
umount -f /mnt
使用 “-f” 参数强制卸载文件系统。这将终止正在使用文件系统的所有进程,并强制卸载它。请谨慎使用此选项,因为它可能导致数据丢失或文件系统损坏。
-
卸载设备:
umount /dev/sdb1
这个命令将卸载设备 “/dev/sdb1” 上挂载的文件系统。在卸载前,请确保没有进程正在访问该设备上的文件系统。
-
卸载所有挂载的文件系统:
umount -a
这个命令将卸载所有已挂载的文件系统。它会遍历 “/etc/mtab” 文件中的所有挂载点,并依次卸载它们。请注意,这将断开与所有挂载文件系统的连接,因此要谨慎使用。
这些是 “umount” 命令的一些常见用法和示例。它是管理文件系统卸载的重要工具,允许你安全地断开与文件系统或设备的连接。在卸载文件系统时,请确保没有任何进程在使用它,并确保按照正确的步骤进行操作,以避免数据损坏或丢失。请注意,使用 “umount” 命令通常需要 root 权限或适当的用户权限。
fsck- 文件系统检查和修复工具
在 Linux 命令行中,“fsck” 命令用于检查和修复文件系统错误。它可以扫描并修复文件系统中的逻辑和物理错误,以确保文件系统的一致性和完整性。下面是一些常见的 “fsck” 命令的用法和代表性的例子:
-
检查并修复文件系统:
fsck /dev/sda1
这个命令将检查并修复设备 “/dev/sda1” 上的文件系统。如果文件系统有错误,“fsck” 将尝试自动修复它们。请注意,通常需要以单用户模式或从启动介质中运行 “fsck” 才能修复根文件系统。
-
强制检查文件系统:
fsck -f /dev/sdb1
使用 “-f” 参数强制检查文件系统。即使文件系统似乎没有错误,也会进行检查和修复。请谨慎使用此选项,因为它可能导致数据丢失或文件系统损坏。
-
指定文件系统类型:
fsck -t ext4 /dev/sdc1
使用 “-t” 参数指定文件系统类型。这个命令将检查 “/dev/sdc1” 上的 ext4 文件系统。如果你知道文件系统的类型,指定它可以加快检查的速度。
-
打印文件系统信息而不执行修复:
fsck -n /dev/sdd1
使用 “-n” 参数可以打印文件系统的信息,而不执行实际的修复操作。这对于预览文件系统错误以及确定需要执行何种修复操作很有用。
这些是 “fsck” 命令的一些常见用法和示例。它是维护和修复文件系统的重要工具,用于检查和修复文件系统错误以确保数据的完整性和可用性。在运行 “fsck” 命令之前,请确保你知道正确的文件系统设备,并在必要时备份数据。运行 “fsck” 命令通常需要 root 权限或适当的用户权限。
dd - 数据复制工具
在 Linux 命令行中,“dd” 命令是一个强大的块设备复制工具,用于创建、转换和复制文件和设备。它可以在不同的设备之间进行数据块级别的复制,并且具有广泛的用途。下面是 “dd” 命令的一些常见用法和代表性的例子:
-
复制文件:
dd if=input_file of=output_file
这个命令将输入文件 “input_file” 的内容复制到输出文件 “output_file” 中。你可以使用完整的文件路径或相对路径来指定文件。
-
复制设备:
dd if=/dev/sda of=/dev/sdb
这个命令将设备 “/dev/sda” 的内容复制到设备 “/dev/sdb” 中。请注意,这是一个非常强大的操作,请确保你知道输入和输出设备的正确标识,以免造成数据丢失。
-
指定块大小:
dd if=input_file of=output_file bs=4k
使用 “bs” 参数可以指定复制操作的块大小。在上面的示例中,块大小被设置为 4KB。通过调整块大小,可以改变复制过程的速度和效率。
-
显示复制进度:
dd if=input_file of=output_file status=progress
使用 “status=progress” 参数可以显示复制进度。这对于大文件或长时间复制操作很有用,可以让你了解复制的当前状态和进度。
-
创建空文件:
dd if=/dev/zero of=output_file bs=1M count=100
这个命令将使用 “/dev/zero” 设备的内容创建一个大小为 100MB 的空文件 “output_file”。通过调整 “count” 参数和块大小,你可以创建所需大小的空文件。
这些是 “dd” 命令的一些常见用法和示例。请注意,在运行 “dd” 命令时要非常小心,确保你知道正确的输入和输出设备,并避免造成数据丢失。使用 “dd” 命令时,请仔细阅读相关文档,并确保了解每个选项和参数的含义及其影响。
dumpe2fs- 显示 ext2/ext3/ext4 文件系统的详细信息
在 Linux 命令行中,“dumpe2fs” 命令用于显示 ext2、ext3、ext4 文件系统的详细信息。它允许你查看文件系统的各种属性,包括块大小、文件系统状态、超级块信息、inode 表、块组描述符以及其他与文件系统相关的元数据。下面是 “dumpe2fs” 命令的一些常见用法和代表性的例子:
-
显示文件系统的基本信息:
dumpe2fs /dev/sda1
这个命令将显示设备 “/dev/sda1” 上的文件系统的基本信息,包括文件系统版本、状态、块大小、块组数量等。
-
显示超级块信息:
dumpe2fs -h /dev/sda1
使用 “-h” 参数可以显示设备 “/dev/sda1” 上文件系统的超级块信息,包括文件系统创建时间、最后挂载时间、最后检查时间等。
-
显示文件系统的块组描述符:
dumpe2fs -g /dev/sda1
使用 “-g” 参数可以显示设备 “/dev/sda1” 上文件系统的块组描述符信息,包括每个块组的起始块号、块位图和 inode 位图的位置等。
-
显示 inode 表的信息:
dumpe2fs -i /dev/sda1
使用 “-i” 参数可以显示设备 “/dev/sda1” 上文件系统的 inode 表信息,包括 inode 数量、空闲 inode 数量、使用的 inode 数量等。
这些是 “dumpe2fs” 命令的一些常见用法和示例。请注意,“dumpe2fs” 命令需要以 root 用户或具有足够权限的用户身份运行,以便访问文件系统的底层信息。在使用该命令时,请确保你指定正确的设备,并仔细阅读输出以了解文件系统的详细信息。
dump- 创建文件系统备份
在 Linux 命令行中,“dump” 命令用于备份文件系统。它可以创建文件系统的完整备份,包括文件、目录和文件属性。“dump” 命令通常与文件系统的 “fsck” 命令一起使用,用于创建一致性的备份以供后续恢复。下面是 “dump” 命令的一些常见用法和代表性的例子:
-
创建文件系统的完整备份:
dump -0u -f /backup/backup.dump /dev/sda1
这个命令将创建设备 “/dev/sda1” 上文件系统的完整备份,并将其保存到 “/backup/backup.dump” 文件中。选项 “-0u” 表示创建完整备份,而 “-f” 用于指定备份文件的路径。
-
创建增量备份:
dump -1u -f /backup/incremental.dump /dev/sda1
使用 “-1u” 选项可以创建设备 “/dev/sda1” 上文件系统的增量备份。增量备份只包含自上次备份以来发生更改的文件和目录。
-
恢复文件系统备份:
restore -r -f /backup/backup.dump
“dump” 命令创建的备份文件可以使用 “restore” 命令进行恢复。上述命令将恢复 “/backup/backup.dump” 文件中的备份到原始文件系统。
这些是 “dump” 命令的一些常见用法和示例。请注意,“dump” 命令需要以 root 用户或具有足够权限的用户身份运行,并且对于大型文件系统,备份可能需要一些时间和磁盘空间。在使用该命令时,请仔细阅读相关文档,并确保正确地指定备份目标和文件路径。
fdisk - 磁盘分区工具
在 Linux 命令行中,“fdisk” 命令用于创建、修改和管理磁盘分区。它是一个功能强大的工具,可以对磁盘进行分区、格式化和设置引导标志。下面是 “fdisk” 命令的一些常见用法和代表性的例子:
-
列出磁盘分区信息:
fdisk -l
这个命令会列出系统中所有可用磁盘的分区信息,包括分区号、起始扇区、大小和文件系统类型等。
-
创建新的磁盘分区:
fdisk /dev/sdb n p <Enter> <Enter> w
上述命令将进入与磁盘 “/dev/sdb” 相关联的 fdisk 交互模式。按下 “n” 创建新分区,然后选择主分区或扩展分区,按下回车键确认默认分区编号和起始扇区,最后使用 “w” 保存并退出。
-
删除磁盘分区:
fdisk /dev/sdb d <partition_number> w
上述命令将进入与磁盘 “/dev/sdb” 相关联的 fdisk 交互模式。按下 “d” 删除分区,然后输入要删除的分区编号,最后使用 “w” 保存并退出。
-
更改磁盘分区类型:
fdisk /dev/sdb t <partition_number> <partition_type_code> w
上述命令将进入与磁盘 “/dev/sdb” 相关联的 fdisk 交互模式。按下 “t” 更改分区类型,然后输入要更改的分区编号和相应的分区类型代码,最后使用 “w” 保存并退出。
这些是 “fdisk” 命令的一些常见用法和示例。请注意,使用 “fdisk” 命令对磁盘进行分区是一项敏感的操作,需要谨慎操作以避免数据丢失。在使用该命令时,请仔细阅读相关文档,并确保对分区操作有清晰的理解。
parted- 磁盘分区工具
在 Linux 命令行中,“parted” 命令用于创建、调整和管理磁盘分区。它提供了一个交互式的界面,可以进行分区操作、调整分区大小、创建新分区等。下面是 “parted” 命令的一些常见用法和代表性的例子:
-
列出磁盘分区信息:
parted /dev/sdb print
这个命令将列出磁盘 “/dev/sdb” 的分区信息,包括分区号、起始位置、大小和文件系统类型等。
-
创建新的磁盘分区:
parted /dev/sdb mkpart primary ext4 0% 10G
上述命令将在磁盘 “/dev/sdb” 上创建一个新的主分区,文件系统类型为 ext4,起始位置为磁盘的起始位置,大小为 10GB。
-
删除磁盘分区:
parted /dev/sdb rm <partition_number>
上述命令将删除磁盘 “/dev/sdb” 上指定分区编号的分区。
-
调整磁盘分区大小:
parted /dev/sdb resizepart <partition_number> 20GB
上述命令将调整磁盘 “/dev/sdb” 上指定分区编号的分区大小为 20GB。
-
切换到不同的磁盘:
parted select /dev/sdc
上述命令将切换到磁盘 “/dev/sdc” 并进入交互模式,以便对其进行分区操作。
这些是 “parted” 命令的一些常见用法和示例。请注意,使用 “parted” 命令对磁盘进行分区是一项敏感的操作,需要谨慎操作以避免数据丢失。在使用该命令时,请仔细阅读相关文档,并确保对分区操作有清晰的理解。
mkfs - 创建文件系统
在 Linux 命令行中,“mkfs” 命令用于创建文件系统在指定的分区或设备上。它支持多种文件系统类型,如 ext4、XFS、FAT32 等。下面是 “mkfs” 命令的一些常见用法和代表性的例子:
-
创建 ext4 文件系统:
mkfs.ext4 /dev/sdb1
上述命令将在 “/dev/sdb1” 分区上创建一个 ext4 文件系统。
-
创建 XFS 文件系统:
mkfs.xfs /dev/sdc1
上述命令将在 “/dev/sdc1” 分区上创建一个 XFS 文件系统。
-
创建 FAT32 文件系统:
mkfs.fat -F32 /dev/sdd1
上述命令将在 “/dev/sdd1” 分区上创建一个 FAT32 文件系统。
-
创建 Swap 分区:
mkswap /dev/sde1
上述命令将在 “/dev/sde1” 分区上创建一个 Swap 分区。
这些是 “mkfs” 命令的一些常见用法和示例。请注意,在使用该命令时,请确保选择正确的分区或设备,并确认您了解所选文件系统的特性和限制。创建文件系统时,通常会丢失分区上的数据,请务必提前备份重要的数据。
partprobe- 通知内核重新读取分区表
在 Linux 命令行中,“partprobe” 命令用于通知内核重新读取分区表,以便立即生效对磁盘分区的更改,而无需重启系统。当您在运行时更改了磁盘分区表(例如创建、删除或调整分区),可以使用 “partprobe” 命令更新内核的分区信息。下面是 “partprobe” 命令的一些常见用法和代表性的例子:
-
更新所有磁盘的分区表:
partprobe
上述命令将通知内核重新读取所有磁盘的分区表。
-
更新指定设备的分区表:
partprobe /dev/sdb
上述命令将通知内核重新读取 “/dev/sdb” 设备的分区表。
-
更新多个设备的分区表:
partprobe /dev/sdc /dev/sdd
上述命令将通知内核重新读取 “/dev/sdc” 和 “/dev/sdd” 设备的分区表。
请注意,“partprobe” 命令只是通知内核重新读取分区表,并不会对磁盘进行实际的更改。它适用于在运行时进行磁盘分区的更改,以便立即生效而无需重启系统。使用 “partprobe” 命令时,请确保具有足够的权限以执行该操作。
e2fsck- ext2/ext3/ext4 文件系统检查和修复工具
在 Linux 命令行中,“e2fsck” 命令用于检查和修复 ext2、ext3、ext4 文件系统的一致性和完整性。它会扫描文件系统中的块和节点,并执行必要的修复操作,以确保文件系统的健康状态。下面是 “e2fsck” 命令的一些常见用法和代表性的例子:
-
检查指定设备上的文件系统并打印错误信息(不进行修复):
e2fsck -n /dev/sda1
上述命令将检查 “/dev/sda1” 设备上的文件系统,并输出错误信息,但不进行修复操作。
-
检查并自动修复指定设备上的文件系统:
e2fsck -y /dev/sdb1
上述命令将检查 “/dev/sdb1” 设备上的文件系统,并自动修复发现的错误,不需要用户交互确认。
-
在文件系统检查前,先对设备进行只读模式挂载:
e2fsck -f -n /dev/sdc1
上述命令将先将 “/dev/sdc1” 设备以只读模式挂载,然后对文件系统进行检查,但不进行修复操作。
-
强制进行文件系统检查,即使文件系统看起来没有错误:
e2fsck -f /dev/sdd1
上述命令将强制对 “/dev/sdd1” 设备上的文件系统进行检查,并进行必要的修复。
请注意,执行 “e2fsck” 命令时,应确保要检查的文件系统未被挂载。如果要检查根文件系统,最好先使用 Live CD 或救援模式引导系统,并将要检查的文件系统卸载。对于大型文件系统或有损坏的文件系统,“e2fsck” 命令可能需要较长时间才能完成。使用 “e2fsck” 命令时,请确保具有足够的权限以执行该操作。
mkswap - 创建交换分区
在 Linux 命令行中,“mkswap” 命令用于创建交换分区。交换分区是一种特殊的分区,用于存储操作系统在物理内存不足时临时存储数据。下面是 “mkswap” 命令的一些常见用法和代表性的例子:
-
创建一个交换分区:
mkswap /dev/sdb1
上述命令将在 “/dev/sdb1” 设备上创建一个交换分区。
-
创建带有指定标签的交换分区:
mkswap -L swap1 /dev/sdc1
上述命令将在 “/dev/sdc1” 设备上创建一个交换分区,并将其标签设置为 “swap1”。
-
创建指定大小的交换分区:
mkswap -c -b 4096 -p 10 /dev/sdd1
上述命令将在 “/dev/sdd1” 设备上创建一个交换分区,使用 4KB 的页大小,并设置为优先级 10。
-
创建交换文件:
mkswap /path/to/swapfile
上述命令将在指定路径下创建一个交换文件,用作交换分区。
请注意,执行 “mkswap” 命令时,应确保要创建交换分区的设备没有被挂载。如果要将交换分区添加到系统中,需要在 “/etc/fstab” 文件中进行相应的配置。创建交换分区后,可以使用 “swapon” 命令将其激活,使其生效。例如:
swapon /dev/sdb1
以上命令将激活 “/dev/sdb1” 设备上的交换分区。
swapon - 启用交换分区
在 Linux 命令行中,“swapon” 命令用于激活交换分区,使其可以用作系统的虚拟内存。下面是 “swapon” 命令的一些常见用法和代表性的例子:
-
激活交换分区:
swapon /dev/sdb1
上述命令将激活 “/dev/sdb1” 设备上的交换分区。
-
激活多个交换分区:
swapon /dev/sdb1 /dev/sdc1
上述命令将同时激活 “/dev/sdb1” 和 “/dev/sdc1” 设备上的交换分区。
-
激活交换文件:
swapon /path/to/swapfile
上述命令将激活指定路径下的交换文件,使其作为交换分区生效。
-
激活所有配置的交换分区:
swapon -a
上述命令将激活 “/etc/fstab” 文件中配置的所有交换分区。
-
显示当前激活的交换分区:
swapon -s
上述命令将显示当前激活的交换分区列表及其相关信息。
请注意,使用 “swapon” 命令激活交换分区后,系统将使用交换分区作为虚拟内存的一部分。可以使用 “swapoff” 命令来停用交换分区。例如,“swapoff /dev/sdb1” 将停用 “/dev/sdb1” 设备上的交换分区。
swapoff- 禁用交换分区
在 Linux 命令行中,“swapoff” 命令用于停用已激活的交换分区,从而将其从系统的虚拟内存中移除。下面是 “swapoff” 命令的一些常见用法和代表性的例子:
-
停用交换分区:
swapoff /dev/sdb1
上述命令将停用 “/dev/sdb1” 设备上的交换分区。
-
停用多个交换分区:
swapoff /dev/sdb1 /dev/sdc1
上述命令将同时停用 “/dev/sdb1” 和 “/dev/sdc1” 设备上的交换分区。
-
停用所有激活的交换分区:
swapoff -a
上述命令将停用所有当前激活的交换分区。
请注意,使用 “swapoff” 命令停用交换分区后,系统将不再使用该交换分区作为虚拟内存。可以使用 “swapon” 命令来重新激活交换分区。例如,“swapon /dev/sdb1” 将重新激活 “/dev/sdb1” 设备上的交换分区。
sync - 同步数据到磁盘
在Linux中,sync
命令用于将文件系统的缓冲区数据刷新到磁盘中,以确保数据的持久性。它的主要作用是将内存中的写缓冲区中的数据同步到磁盘中,以防止数据丢失或损坏。以下是 sync
命令的用法说明和一些代表性的例子:
用法:sync [OPTION]...
- 没有特定选项的
sync
命令会将所有挂载的文件系统的缓冲区数据刷新到磁盘中。 -f, --file-systems
:只刷新指定文件系统的缓冲区数据。可以指定文件系统的名称或挂载点路径。-d, --data
:只刷新数据缓冲区,不刷新文件系统的元数据缓冲区。-i, --inode
:只刷新文件系统的元数据缓冲区,不刷新数据缓冲区。
示例:
-
刷新所有文件系统的缓冲区数据:
sync
-
刷新特定文件系统的缓冲区数据:
sync -f /dev/sda1
-
只刷新数据缓冲区,不刷新元数据缓冲区:
sync -d
-
只刷新元数据缓冲区,不刷新数据缓冲区:
sync -i
sync
命令通常在系统关机之前使用,以确保所有数据都被正确写入磁盘。它也可以在特定操作之后使用,例如在执行重要的文件操作或备份之后,以确保数据的持久性。
请注意,sync
命令只是将数据从缓冲区刷新到磁盘,它并不保证数据的完全写入和同步。因此,在执行磁盘操作之前,建议使用适当的命令(如 umount
)卸载文件系统或等待磁盘操作完成,以确保数据的完整性和一致性。
resize2fs- 调整 ext2/ext3/ext4 文件系统的大小
在Linux中,resize2fs
命令用于调整 ext2、ext3 和 ext4 文件系统的大小。它可以增加或缩小文件系统的大小,以适应分区的变化或存储需求的变化。以下是 resize2fs
命令的用法说明和一些代表性的例子:
用法:resize2fs [OPTION]... DEVICE [SIZE]
DEVICE
:指定要调整大小的设备或分区。SIZE
:可选参数,指定新的文件系统大小。它可以是以块为单位的大小,也可以是带有单位(如K、M、G)的人类可读格式。
示例:
-
增加文件系统的大小到指定的设备上最大可用大小:
resize2fs /dev/sda1
-
增加文件系统的大小到指定的设备上的特定大小(例如,100GB):
resize2fs /dev/sda1 100G
-
缩小文件系统的大小到指定的设备上的特定大小(例如,50GB):
resize2fs /dev/sda1 50G
-
强制缩小文件系统的大小,即使目标大小比文件系统中的数据还要小:
resize2fs -f /dev/sda1 50G
resize2fs
命令在调整文件系统大小之前会检查设备上的文件系统一致性,并在需要时自动调用 e2fsck
命令进行修复。请注意,在调整文件系统大小之前,务必备份重要的数据,并确保对数据进行充分测试和验证。
请注意,调整文件系统大小是一个潜在的危险操作,可能会导致数据丢失或文件系统损坏。在执行 resize2fs
命令之前,请确保了解分区和文件系统的当前状态,并仔细阅读相关文档和指南。建议在生产环境中谨慎使用,并在必要时备份数据和进行测试。
11 权限相关
chmod- 修改文件或目录的权限
在Linux中,chmod
命令用于更改文件或目录的权限。它允许用户授予或撤销文件的读、写和执行权限,以及设置特殊权限如 SUID、SGID 和 sticky bit。以下是 chmod
命令的用法说明和一些代表性的例子:
用法:chmod [OPTION]... MODE[,MODE]... FILE...
MODE
:权限模式,可以是八进制或符号模式。FILE
:要更改权限的文件或目录。
符号模式示例:
-
授予文件所有者读、写和执行权限,仅授予组和其他用户读权限:
chmod u=rwx,g=r,o=r file.txt
-
为目录及其所有内容授予所有者和组写权限以及其他用户读权限:
chmod u+rw,g+w,o+r directory/
-
撤销其他用户的执行权限:
chmod o-x file.txt
-
授予所有用户执行权限,并设置 SUID 位:
chmod a+x,su file.txt
八进制模式示例:
-
授予所有者读、写和执行权限,组和其他用户只有读权限:
chmod 644 file.txt
-
授予所有用户读和执行权限,并设置 SGID 位:
chmod 2755 directory/
-
授予所有用户读、写和执行权限,并设置 sticky bit:
chmod 1777 directory/
常用选项:
-R
:递归地更改目录及其内容的权限。-v
:显示详细的输出,列出每个更改的文件名。-c
:仅在文件的权限发生更改时才显示输出。
请注意,使用 chmod
命令需要足够的权限。只有文件的所有者或超级用户(root)可以更改文件的权限。在使用 chmod
命令时,应谨慎操作,确保了解文件和目录的当前权限,并仔细考虑对文件权限的更改。
chown- 更改文件或目录的所有者
在Linux中,chown
命令用于更改文件或目录的所有者和所属组。它允许用户将文件的所有权转移给其他用户或更改文件的所属组。以下是 chown
命令的用法说明和一些代表性的例子:
用法:chown [OPTION]... [OWNER][:[GROUP]] FILE...
OWNER
:新的所有者。GROUP
:新的所属组(可选)。FILE
:要更改所有者和所属组的文件或目录。
示例:
-
将文件的所有权转移给不同的用户:
chown newuser file.txt
-
将文件的所有权和所属组同时更改为不同的用户和组:
chown newuser:newgroup file.txt
-
只更改文件的所属组:
chown :newgroup file.txt
-
递归地更改目录及其内容的所有者和所属组:
chown -R newuser:newgroup directory/
常用选项:
-R
:递归地更改目录及其内容的所有者和所属组。-v
:显示详细的输出,列出每个更改的文件名。-c
:仅在文件的所有者或所属组发生更改时才显示输出。
请注意,使用 chown
命令需要足够的权限。只有文件的所有者、超级用户(root)或具有特权的用户才能更改文件的所有者和所属组。在使用 chown
命令时,请确保了解文件和目录的当前所有者和所属组,并仔细考虑对文件所有权的更改。
chgrp- 更改文件或目录的所属组
在Linux中,chgrp
命令用于更改文件或目录的所属组。它允许用户将文件的所属组更改为其他组。以下是 chgrp
命令的用法说明和一些代表性的例子:
用法:chgrp [OPTION]... GROUP FILE...
GROUP
:新的所属组。FILE
:要更改所属组的文件或目录。
示例:
-
将文件的所属组更改为不同的组:
chgrp newgroup file.txt
-
递归地更改目录及其内容的所属组:
chgrp -R newgroup directory/
-
使用符号链接(软链接)来更改链接文件的所属组而不是目标文件:
chgrp -h newgroup symlink
常用选项:
-R
:递归地更改目录及其内容的所属组。-v
:显示详细的输出,列出每个更改的文件名。-c
:仅在文件的所属组发生更改时才显示输出。
请注意,使用 chgrp
命令需要足够的权限。只有文件的所有者、超级用户(root)或具有特权的用户才能更改文件的所属组。在使用 chgrp
命令时,请确保了解文件和目录的当前所属组,并仔细考虑对所属组的更改。
umask- 设置新创建文件的默认权限掩码
在Linux中,umask
命令用于设置文件和目录的默认权限掩码。默认权限掩码确定新创建文件和目录的权限。它指示操作系统在创建新文件或目录时要从文件系统默认权限中屏蔽哪些权限位。以下是 umask
命令的用法说明和一些代表性的例子:
用法:umask [OPTION] [VALUE]
OPTION
:可选参数。VALUE
:新的权限掩码值。如果未提供该值,则显示当前的权限掩码。
示例:
-
显示当前的权限掩码值:
umask
-
设置权限掩码为
022
:umask 022
-
设置权限掩码为
007
:umask 007
常用选项:
- 无选项:显示当前的权限掩码值。
-S
:以符号形式显示权限掩码(例如u=rwx,g=rwx,o=rx
)。-p
:以八进制形式显示权限掩码(例如022
)。
权限掩码的值由三个八进制数字表示,分别对应于所有者、组和其他用户的权限。每个数字表示可以屏蔽的权限位。常见的权限位为:
4
:读权限2
:写权限1
:执行权限
因此,如果权限掩码的值为 022
,表示默认情况下,新创建的文件将具有所有者读写权限,组读权限,其他用户读权限。请注意,权限掩码会与默认权限相反,因此需要指定要屏蔽的权限位。
使用 umask
命令时,建议根据安全需求和最佳实践选择适当的权限掩码值。
12 查看登录信息
whoami-显示当前用户
在Linux命令中,whoami
命令用于查找当前登录用户的用户名。它返回当前用户的有效用户名。以下是whoami
命令的用法说明和一些代表性的例子:
用法:whoami
示例:
-
显示当前登录用户的用户名:
whoami
-
在脚本中使用
whoami
命令来获取当前用户的用户名:#!/bin/bash username=$(whoami) echo "当前用户为:$username"
whoami
命令不需要任何参数或选项,它只返回当前用户的用户名。该命令通常用于脚本或需要根据当前用户执行不同操作的情况下。
who-显示登录用户
在Linux命令中,who
命令用于显示当前登录系统的用户信息。它会列出登录到系统的用户列表,并显示每个用户的用户名、终端、登录时间等详细信息。以下是who
命令的用法说明和一些代表性的例子:
用法:who [选项]
常用选项:
-a
:显示更详细的信息,包括系统启动时间和闲置时间。-b
:显示系统的启动时间。-r
:显示当前运行级别。-H
:显示列标题。-q
:仅显示登录用户的数量。-s
:仅显示用户名和登录时间。
示例:
-
显示当前登录用户的列表:
who
-
显示当前登录用户的数量:
who -q
-
显示系统的启动时间:
who -b
-
显示更详细的用户信息,包括启动时间和闲置时间:
who -a
-
仅显示用户名和登录时间:
who -s
who
命令可以提供关于当前登录用户的有用信息,如用户名、终端、登录时间等。它对于系统管理员来说是一个很有用的工具,可以帮助他们了解当前系统的状态和用户活动情况。
w-显示活动用户
在Linux命令中,w
命令用于显示当前登录系统的用户信息以及他们正在做的活动。它会列出登录到系统的用户列表,并显示每个用户的用户名、终端、登录时间、运行时间、当前执行的命令等详细信息。以下是w
命令的用法说明和一些代表性的例子:
用法:w [选项] [用户名]
常用选项:
-h
:以简洁格式显示输出结果,省略列标题。-s
:仅显示当前登录用户的摘要信息,包括用户名、终端、登录时间、运行时间。-f
:显示完整的输出信息,包括用户名、终端、远程主机、登录时间、运行时间、当前执行的命令。
示例:
-
显示当前登录用户的列表及其详细信息:
w
-
以简洁格式显示当前登录用户的列表:
w -h
-
仅显示当前登录用户的摘要信息:
w -s
-
显示指定用户的信息:
w username
w
命令提供了更详细的用户信息,包括用户的活动、终端、登录时间、运行时间等。它对于系统管理员来说是一个很有用的工具,可以帮助他们了解当前系统的用户活动情况,监控系统的使用情况,以及识别可能存在的问题。
last-显示最近登录用户
在Linux命令中,last
命令用于显示系统中最近登录的用户列表和登录历史记录。它读取并显示/var/log/wtmp
文件中的内容,该文件记录了用户登录和注销的信息。以下是last
命令的用法说明和一些代表性的例子:
用法:last [选项] [用户名]
常用选项:
-n <行数>
:指定要显示的登录记录行数,默认为全部显示。-f <文件>
:指定要读取的登录记录文件,默认为/var/log/wtmp
。-x
:显示更多详细的信息,包括系统关机和重启的记录。-w
:显示记录中的IP地址和主机名。
示例:
-
显示最近的登录记录:
last
-
显示指定用户的登录记录:
last username
-
显示最近10条登录记录:
last -n 10
-
显示指定登录记录文件的内容:
last -f /path/to/file
-
显示更详细的登录记录信息:
last -x
last
命令显示了用户登录和注销的时间、终端、IP地址、主机名等信息。它对于系统管理员来说是一个有用的工具,可以帮助他们了解用户的登录行为、追踪安全事件、排查问题等。请注意,last
命令需要root权限才能查看完整的登录历史记录。
lastlog-显示最近登录记录
在Linux命令中,lastlog
命令用于显示系统中所有用户最后一次登录的信息。它读取并显示/var/log/lastlog
文件中的内容,该文件记录了用户最后一次登录的时间、终端和IP地址等信息。以下是lastlog
命令的用法说明和一些代表性的例子:
用法:lastlog [选项] [用户名]
常用选项:
-b <时间>
:指定起始时间,只显示在该时间之后登录的用户。-t <时间>
:指定结束时间,只显示在该时间之前登录的用户。
示例:
-
显示所有用户最后一次登录的信息:
lastlog
-
显示指定用户最后一次登录的信息:
lastlog username
-
显示在指定时间之后登录的用户信息:
lastlog -b "2022-01-01"
-
显示在指定时间之前登录的用户信息:
lastlog -t "2022-12-31"
lastlog
命令会显示用户的登录名称、登录时间、登录位置等信息。它对于系统管理员来说是一个有用的工具,可以帮助他们追踪用户的最后一次登录情况,检查用户活动,以及了解系统的使用情况。请注意,lastlog
命令需要root权限才能查看完整的登录信息。
users-显示登录用户
在Linux命令中,users
命令用于显示当前登录系统的用户列表。它会读取/var/run/utmp
文件中的登录记录,并列出当前活动的用户。以下是users
命令的用法说明和一些代表性的例子:
用法:users [选项]
常用选项:
-q
:仅显示用户数量,而不显示用户名列表。-o
:显示用户列表,以逗号分隔。
示例:
-
显示当前登录系统的用户列表:
users
输出可能类似于:
user1 user2 user3
-
仅显示当前登录系统的用户数量:
users -q
输出为用户数量,例如:
3
-
显示当前登录系统的用户列表,并以逗号分隔:
users -o
输出为逗号分隔的用户名列表,例如:
user1,user2,user3
users
命令对于查看当前系统上活动的用户非常有用。它可以帮助管理员了解系统的使用情况,例如查看有多少用户同时登录,以及这些用户是谁。注意,users
命令仅显示当前登录系统的用户信息,不包括过去的登录记录。
finger-显示用户信息
在Linux命令中,finger
命令用于查看关于用户的信息,包括登录状态、终端信息、最近登录时间等。它可以提供用户的详细信息,如用户名、真实姓名、登录shell、登录时间等。以下是finger
命令的用法说明和一些代表性的例子:
用法:finger [选项] [用户名]
常用选项:
-l
:显示详细信息,包括用户的真实姓名、登录shell、最近登录时间等。-s
:显示简要信息,包括用户的登录状态和登录时间。-m
:显示用户的邮件信息,包括未读邮件的数量和邮件摘要。-p
:显示用户的计划任务。
示例:
-
显示用户的详细信息:
finger -l username
该命令将显示指定用户的详细信息,包括真实姓名、登录shell、登录时间等。
-
显示用户的简要信息:
finger -s username
该命令将显示指定用户的简要信息,包括登录状态和登录时间。
-
显示用户的邮件信息:
finger -m username
该命令将显示指定用户的邮件信息,包括未读邮件的数量和邮件摘要。
-
显示用户的计划任务:
finger -p username
该命令将显示指定用户的计划任务。
finger
命令可以帮助管理员或用户获取其他用户的信息,例如了解用户的登录状态、联系方式、计划任务等。请注意,某些系统可能限制普通用户对finger
命令的访问权限,因此可能需要以管理员身份运行该命令或进行其他配置才能正常使用。
13 其他
echo-打印文本或变量到标准输出
在Linux命令中,echo
命令用于在终端输出文本或变量的内容。它是一个简单而常用的命令,可以用于打印文本、变量值和特殊字符等。以下是echo
命令的用法说明和一些代表性的例子:
用法:echo [选项] [字符串或变量]
常用选项:
-e
:启用转义字符的解析,可以解析特殊字符。-n
:禁止输出末尾的换行符。
示例:
-
打印文本:
echo "Hello, World!"
这将在终端输出"Hello, World!"。
-
打印变量值:
name="John" echo "My name is $name"
这将打印"My name is John",其中
$name
将被变量的值替换。 -
打印多行文本:
echo -e "Line 1\nLine 2\nLine 3"
使用
-e
选项可以解析转义字符。上述命令将打印三行文本,每行一个。 -
打印特殊字符:
echo "This is a tab: \t, and this is a newline: \n"
转义字符
\t
表示制表符,\n
表示换行符。上述命令将打印包含制表符和换行符的文本。 -
打印不换行:
echo -n "Hello, " echo "World!"
使用
-n
选项可以禁止输出末尾的换行符。上述命令将在同一行输出"Hello, World!"。
echo
命令对于打印简单的文本和变量值非常有用,可以用于脚本编写、输出信息等场景。它还支持使用转义字符和特殊字符,使得输出更加灵活。
printf-格式化输出文本
在Linux命令中,printf
命令用于格式化输出文本。它可以根据指定的格式字符串和参数生成输出结果。以下是printf
命令的用法说明和一些代表性的例子:
用法:printf 格式字符串 [参数]
格式字符串中可以包含普通字符和格式控制符,格式控制符以百分号(%)开头。常见的格式控制符有:
%s
:字符串。%d
:有符号十进制整数。%f
:浮点数。%c
:字符。%x
:十六进制数(小写字母)。%X
:十六进制数(大写字母)。%b
:二进制数。
示例:
-
打印字符串和变量值:
name="John" printf "Hello, %s\n" "$name"
这将打印"Hello, John",其中
%s
表示字符串的占位符,由后面的变量$name
替换。 -
格式化打印整数和浮点数:
age=25 height=1.75 printf "I am %d years old and %.2f meters tall.\n" "$age" "$height"
这将打印"I am 25 years old and 1.75 meters tall.",其中
%d
表示整数的占位符,%.2f
表示浮点数的占位符,并限定小数点后保留两位。 -
打印特殊字符和转义序列:
printf "This is a tab:\tand this is a newline:\n"
上述命令将打印包含制表符和换行符的文本。
-
打印二进制数和十六进制数:
decimal=10 printf "Binary: %b, Hex: %x\n" "$decimal" "$decimal"
这将打印"Binary: 1010, Hex: a",其中
%b
用于打印十进制数的二进制表示,%x
用于打印十进制数的十六进制表示。
printf
命令提供了更灵活和精确的格式化输出功能,可以根据需要对输出进行定制。通过使用不同的格式控制符和参数,可以生成具有特定格式的输出结果。它在脚本编写和格式化输出等方面非常有用。
rpm-用于管理RPM软件包
在Linux系统中,rpm
(Red Hat Package Manager)命令用于管理和查询RPM软件包。它是一种包管理工具,用于安装、升级、查询和卸载软件包。以下是rpm
命令的用法说明和一些代表性的例子:
用法:rpm [选项] [命令] [软件包名]
常用选项:
-i
:安装一个软件包。-U
:升级已安装的软件包。-e
:卸载一个软件包。-q
:查询软件包的信息。-l
:列出软件包中的文件。-V
:验证软件包的完整性。-h
:显示帮助信息。
示例:
-
安装软件包:
rpm -i package.rpm
这将安装名为
package.rpm
的软件包。 -
升级软件包:
rpm -U package.rpm
这将升级已安装的软件包为名为
package.rpm
的新版本。 -
卸载软件包:
rpm -e package
这将卸载名为
package
的软件包。 -
查询软件包信息:
rpm -q package
这将显示名为
package
的软件包的信息,包括版本号、安装状态等。 -
列出软件包中的文件:
rpm -ql package
这将列出名为
package
的软件包中的文件列表。 -
验证软件包完整性:
rpm -V package
这将验证名为
package
的软件包的完整性,检查文件的权限、所有者、校验和等信息。
rpm
命令是在基于RPM包管理的Linux系统中常用的工具之一。它提供了一种方便的方式来安装、升级、查询和管理软件包,使得在Linux系统上进行软件包管理变得简单而高效。
yum-用于管理软件包及其依赖关系
在Linux系统中,yum
(Yellowdog Updater Modified)命令是一种包管理工具,主要用于在基于RPM包管理的系统上管理软件包。它可以方便地从软件仓库中安装、升级、查询和删除软件包,解决了依赖关系和版本管理的问题。以下是yum
命令的用法说明和一些代表性的例子:
用法:yum [选项] [命令] [软件包名]
常用选项:
install
:安装一个或多个软件包。update
:升级已安装的软件包。remove
:卸载一个或多个软件包。search
:搜索软件包。list
:列出已安装的软件包。info
:显示软件包的详细信息。upgrade
:升级所有可用的软件包。clean
:清理缓存和临时文件。
示例:
-
安装软件包:
yum install package
这将从软件仓库中安装名为
package
的软件包及其依赖项。 -
升级软件包:
yum update package
这将升级已安装的名为
package
的软件包到最新可用版本。 -
卸载软件包:
yum remove package
这将卸载名为
package
的软件包及其依赖项。 -
搜索软件包:
yum search keyword
这将搜索包含关键字
keyword
的软件包。 -
列出已安装的软件包:
yum list installed
这将列出所有已安装的软件包。
-
显示软件包详细信息:
yum info package
这将显示名为
package
的软件包的详细信息,包括版本号、描述、依赖关系等。 -
升级所有可用的软件包:
yum upgrade
这将升级系统上所有可用的软件包到最新版本。
-
清理缓存和临时文件:
yum clean all
这将清理
yum
命令使用的缓存和临时文件。
yum
命令是在基于RPM包管理的Linux系统中常用的工具之一。它提供了一种简单而强大的方式来管理软件包,自动处理依赖关系和版本管理,使得在Linux系统上安装、升级和管理软件包变得更加便捷。
watch-周期性地执行命令并显示结果
在Linux命令中,watch
命令是一种实用工具,用于周期性地运行指定的命令并在终端上展示其输出。它可以帮助我们实时监视命令的执行结果,并持续更新显示。
用法:watch [选项] 命令
常用选项:
-n
:指定刷新间隔时间,单位为秒,默认为2秒。-d
:高亮显示命令输出的变化部分。-t
:在每行输出前显示时间戳。-c
:清除终端屏幕,每次刷新时先清除屏幕再显示命令输出。
示例:
-
监控系统负载情况:
watch -n 1 uptime
这将每秒刷新一次显示系统的负载情况,包括当前时间、系统运行时间和平均负载。
-
实时查看文件内容变化:
watch tail -n 10 filename
这将每2秒刷新一次显示文件
filename
的最后10行内容,并实时显示文件内容的变化。 -
监控网络连接情况:
watch -d netstat -an
这将每2秒刷新一次显示当前的网络连接情况,并高亮显示连接状态的变化。
-
监控磁盘空间使用情况:
watch df -h
这将每2秒刷新一次显示磁盘空间使用情况,包括文件系统、容量、已用空间和可用空间等信息。
watch
命令可以帮助我们实时监视命令的输出,特别适用于需要持续追踪某个命令结果的场景。它可以让我们方便地观察命令的变化,及时获取关键信息,并帮助我们进行故障排查、性能分析和系统监控等工作。
alias-创建命令别名
在Linux命令中,alias
命令用于创建命令别名,可以让我们为常用的命令或命令组合定义简化的替代名称。这样做可以提高工作效率并减少输入长命令的错误。alias
命令的格式为:
alias [别名]='命令'
要查看当前已定义的别名列表,可以直接输入alias
命令。下面是几个示例:
-
创建简化的命令别名:
alias ll='ls -l'
这样,每次输入
ll
命令时,实际执行的是ls -l
命令,从而显示详细的文件列表信息。 -
创建带参数的别名:
alias grep='grep --color=auto'
这样,每次使用
grep
命令时,自动带上--color=auto
参数,使匹配结果带有颜色高亮显示。 -
创建复杂的命令组合别名:
alias update='sudo apt update && sudo apt upgrade'
这个别名定义将执行两个命令,即先运行
sudo apt update
更新软件源,然后运行sudo apt upgrade
升级已安装的软件包。 -
删除别名:
unalias ll
这个命令将删除之前定义的
ll
别名,使得ll
恢复为未定义的命令。
通过使用alias
命令,我们可以根据自己的需求为常用的命令定义别名,简化命令输入,并提高工作效率。注意,别名只在当前会话中有效,如果需要永久保存别名,可以将其添加到shell配置文件(如~/.bashrc
或~/.bash_profile
)中。
unalias-移除命令别名
在Linux命令中,unalias
命令用于删除已定义的别名。当我们不再需要某个别名时,可以使用unalias
命令将其从系统中删除。unalias
命令的语法如下:
unalias [选项] [别名]
要删除指定的别名,可以在命令中提供别名作为参数。如果没有指定别名,则删除所有已定义的别名。下面是几个使用示例:
-
删除单个别名:
unalias ll
这个命令将删除之前定义的
ll
别名。 -
删除所有别名:
unalias -a
使用
-a
选项,可以删除所有已定义的别名。 -
删除带有参数的别名:
unalias grep
如果之前为
grep
命令定义了别名,使用该命令将删除该别名,使grep
恢复为系统原始的命令。
请注意,unalias
命令只在当前会话中起作用,当会话结束时,删除的别名将被恢复。如果希望永久删除别名,可以将其从shell配置文件(如~/.bashrc
或~/.bash_profile
)中删除相应的定义。
通过使用unalias
命令,我们可以轻松删除不再需要的别名,以恢复原始的命令行行为或为其指定新的别名。
date-显示或设置系统日期和时间
在Linux命令中,date
命令用于显示和设置系统的日期和时间。它可以显示当前日期和时间,也可以根据指定的格式显示日期和时间。date
命令的语法如下:
date [选项] [+格式]
下面是一些常用的选项和示例:
-
显示当前日期和时间:
date
这个命令将以默认格式显示当前的日期和时间。
-
显示指定格式的日期和时间:
date +"%Y-%m-%d %H:%M:%S"
该命令将以"年-月-日 时:分:秒"的格式显示当前的日期和时间。可以根据需要自定义格式,使用不同的格式控制符(如
%Y
表示四位数的年份,%m
表示两位数的月份,%d
表示两位数的日期,%H
表示24小时制的小时数,%M
表示分钟数,%S
表示秒数等)。 -
显示指定时区的日期和时间:
date -R
使用
-R
选项,该命令将以RFC 2822格式显示当前的日期和时间,包括时区信息。 -
设置系统时间:
sudo date -s "2023-06-06 12:00:00"
使用
-s
选项和指定的日期和时间,该命令将设置系统的日期和时间。 -
显示文件的最后修改时间:
ls -l filename
这个命令将显示指定文件的详细信息,包括最后修改时间。
-
将日期和时间写入文件:
date > timestamp.txt
这个命令将当前的日期和时间写入
timestamp.txt
文件中。
通过使用date
命令,我们可以获取系统的当前日期和时间,自定义日期和时间的格式,设置系统时间以及与其他命令结合使用,以满足不同的需求。
clear-清除终端屏幕内容
在Linux命令中,clear
命令用于清除当前终端窗口的内容,将其滚动到顶部,使窗口看起来空白一片。这个命令对于清除屏幕上的大量输出或旧的命令历史记录非常有用,以使终端窗口保持整洁。clear
命令没有任何选项,只需在命令行中输入clear
即可。
以下是clear
命令的一些示例:
-
清除屏幕内容:
clear
这个命令将清除终端窗口中的所有文本,并将光标移到窗口的顶部。
-
清除屏幕内容并执行其他命令:
clear ; ls
这个命令将首先清除屏幕内容,然后执行
ls
命令来列出当前目录的文件和文件夹。 -
清除屏幕内容并保留最后几行:
clear -x
使用
-x
选项,这个命令将清除终端窗口中的所有文本,但会保留最后几行。这对于保持窗口的一部分输出或状态信息很有用。 -
清除屏幕内容并显示提示符:
clear ; echo "Welcome to Linux"
这个命令将首先清除屏幕内容,然后显示欢迎消息或自定义的文本。
-
在脚本中使用
clear
命令:#!/bin/bash clear echo "This is a script" # 其他命令...
在脚本中,可以使用
clear
命令来清除屏幕内容,并在执行脚本时提供更干净的输出。
通过使用clear
命令,可以轻松清除终端窗口中的内容,保持窗口整洁,并提供更好的命令行交互体验。
history-显示命令历史记录
在Linux命令中,history
命令用于显示当前用户在终端窗口中执行过的命令历史记录。它会列出最近执行的命令,并附带每个命令前面的序号。通过history
命令,您可以查看之前执行的命令并重新执行它们,提高工作效率。
以下是history
命令的一些示例:
-
查看完整的命令历史记录:
history
这个命令将列出当前用户在终端窗口中执行的所有命令历史记录。每个命令都带有一个序号,以便您可以根据需要重新执行它们。
-
显示指定数量的命令历史记录:
history 10
这个命令将仅显示最近执行的10条命令历史记录。您可以将数字替换为所需的历史记录数量。
-
执行历史记录中的命令:
!100
这个命令将执行历史记录中序号为100的命令。通过使用
!
后跟命令的序号,您可以快速重新执行先前执行过的命令。 -
使用关键字搜索命令历史记录:
history | grep "keyword"
这个命令将在命令历史记录中搜索包含指定关键字的命令。您可以将"keyword"替换为您要搜索的实际关键字。
-
清除命令历史记录:
history -c
这个命令将清除当前用户的命令历史记录。在执行此命令后,您将无法再使用
history
命令查看之前执行的命令。
通过使用history
命令,您可以方便地查看和管理在终端窗口中执行的命令历史记录。它是一个有用的工具,可以帮助您快速回顾之前执行的命令,避免重复输入相同的命令,并提高工作效率。
eject-弹出可移动媒体设备(如光盘驱动器)
在Linux命令中,eject
命令用于控制光驱、磁盘或其他可移动媒体设备的弹出和关闭。它可以用于将光盘从光驱中弹出,或将磁盘从磁盘驱动器中弹出。
以下是eject
命令的一些示例用法:
-
弹出光驱中的光盘:
eject
这个命令将弹出当前系统中的默认光驱中的光盘。您可以在不带任何参数的情况下直接执行此命令。
-
弹出指定设备中的介质:
eject /dev/cdrom
这个命令将弹出指定设备(例如
/dev/cdrom
)中的介质。您可以将/dev/cdrom
替换为您系统中实际的光驱设备路径。 -
强制弹出介质:
eject -r -i off
这个命令将使用强制模式弹出光驱中的介质。通过使用
-r
选项和-i off
选项,eject
命令将忽略任何正在使用介质的进程,并强制将介质从光驱中弹出。 -
关闭光驱:
eject -t
这个命令将关闭当前系统中的默认光驱。执行此命令后,光驱托盘将被收回。
-
显示可用的光驱设备:
eject -L
这个命令将列出系统中可用的光驱设备列表。您可以根据列表中的设备路径选择要操作的光驱设备。
请注意,为了使用eject
命令,您需要具有适当的权限。通常,只有root用户或具有sudo权限的用户才能成功执行eject
命令。
这些示例显示了eject
命令的一些常见用法。它是一个简单而实用的工具,可用于控制光驱和磁盘驱动器的介质弹出和关闭操作。
time-测量命令执行时间
在Linux命令中,time
命令用于测量命令执行的时间。它可以告诉您一个命令执行所需的实际时间、用户 CPU 时间和系统 CPU 时间。它对于评估命令的性能和优化脚本很有用。
以下是time
命令的一些示例用法:
-
测量命令执行时间:
time command
这个命令将执行给定的命令,并报告它的实际时间、用户 CPU 时间和系统 CPU 时间。您需要将
command
替换为要测量时间的实际命令。示例:
time ls
这个示例将测量
ls
命令的执行时间。 -
显示更详细的时间信息:
time -v command
使用
-v
选项,time
命令将提供更详细的时间信息,包括命令的页缺失次数、I/O 操作次数、上下文切换次数等。示例:
time -v grep "pattern" file.txt
这个示例将测量执行
grep
命令来搜索文件file.txt
中的模式pattern
所需的时间,并显示详细的时间信息。 -
以可读的格式显示时间:
time -p command
使用
-p
选项,time
命令将以可读的格式显示时间,以便更易于阅读和理解。示例:
time -p sleep 5
这个示例将测量
sleep 5
命令执行所需的时间,并以可读的格式显示。
请注意,time
命令与shell内置的time
功能可能会有不同。在大多数情况下,使用绝对路径(如/usr/bin/time
)来明确地指定要使用的time
命令。
这些示例展示了time
命令的一些常见用法。它是一个有用的工具,可用于测量命令执行的时间,并帮助您评估性能和优化脚本。
nc-用于网络连接和传输数据
在Linux命令中,nc
(netcat)是一个网络工具,用于在网络上进行数据传输。它可以作为客户端或服务器使用,并支持多种协议和功能。以下是nc
命令的一些常见用法和示例:
-
作为客户端连接到远程主机:
nc host port
使用
nc
命令作为客户端,连接到指定的host
和port
。它可以用于测试网络服务的可用性和与服务器之间的通信。示例:
nc example.com 80
这个示例将作为客户端连接到
example.com
的80端口。 -
在监听模式下作为服务器:
nc -l port
使用
nc
命令在指定的port
上以监听模式启动一个服务器。它可以接受传入的连接并处理数据。示例:
nc -l 8080
这个示例将在本地启动一个监听在8080端口的服务器。
-
传输文件:
nc -l port > file.txt nc host port < file.txt
使用
nc
命令传输文件,可以将数据流重定向到文件或从文件读取数据流。这对于在网络上快速传输文件很有用。示例:
nc -l 1234 > received.txt nc host 1234 < file.txt
第一个示例将在本地启动一个服务器,接收从客户端发送的数据并将其保存到
received.txt
文件中。第二个示例将从本地将file.txt
文件发送到远程主机。 -
网络端口扫描:
nc -z host port-range
使用
nc
命令进行网络端口扫描,可以检查指定主机上的端口是否处于打开状态。示例:
nc -z example.com 1-100
这个示例将扫描
example.com
主机的1到100范围的端口,以检查哪些端口处于打开状态。
这些示例展示了nc
命令的一些常见用法。nc
是一个功能强大的工具,可用于网络通信、文件传输和端口扫描等任务。请注意,在使用nc
时要遵循网络安全最佳实践,并确保只与可信的主机进行通信。
xargs-从标准输入获取参数,并将其作为命令的参数
在Linux命令中,xargs
命令用于从标准输入或文件中读取数据,并将其作为参数传递给其他命令进行处理。它通常与其他命令结合使用,以便批量处理数据。以下是xargs
命令的一些常见用法和示例:
-
使用
xargs
传递参数给其他命令:command | xargs [options] other_command
使用
xargs
命令将从标准输入读取的数据作为参数传递给other_command
进行处理。示例:
echo "file1.txt file2.txt file3.txt" | xargs rm
这个示例将从标准输入读取文件名列表,并将它们作为参数传递给
rm
命令,从而删除这些文件。 -
从文件中读取数据并传递给其他命令:
xargs [options] other_command < file.txt
使用
xargs
命令从文件中读取数据,并将其作为参数传递给other_command
进行处理。示例:
xargs rm < file.txt
这个示例将从
file.txt
文件中读取文件名,并将它们作为参数传递给rm
命令,从而删除这些文件。 -
使用特定分隔符分割数据:
command | xargs -d delimiter [options] other_command
使用
-d
选项指定分隔符,让xargs
根据指定的分隔符将数据拆分成多个参数。示例:
echo "file1.txt:file2.txt:file3.txt" | xargs -d : rm
这个示例将使用冒号作为分隔符,将字符串拆分成文件名,并将它们作为参数传递给
rm
命令。 -
控制参数数量:
command | xargs -n num [options] other_command
使用
-n
选项指定每次传递给other_command
的参数数量。示例:
echo "file1.txt file2.txt file3.txt" | xargs -n 2 rm
这个示例将每次传递两个文件名作为参数给
rm
命令进行处理。
这些示例展示了xargs
命令的一些常见用法。xargs
可以方便地处理大量数据,并将其传递给其他命令进行处理。使用时请注意参数的正确传递和处理,以及避免出现意外的结果。
exec-替换当前进程并执行新命令
在Linux命令中,exec
命令用于替换当前的进程,并在新的进程中执行指定的命令,取代原有的进程。它常用于Shell脚本或命令中,用于切换当前进程的上下文环境或重新执行命令。以下是exec
命令的一些常见用法和示例:
-
替换当前Shell进程:
exec [command]
使用
exec
命令可以直接替换当前的Shell进程,并在新的进程中执行指定的命令。示例:
exec ls
这个示例将替换当前Shell进程,并在新的进程中执行
ls
命令。 -
切换Shell的环境:
exec [command] [arguments]
使用
exec
命令可以切换当前Shell的环境,将当前进程替换为指定的命令,并传递相应的参数。示例:
exec /bin/bash
这个示例将切换当前Shell的环境,将当前进程替换为新的Bash Shell。
-
在Shell脚本中使用
exec
:exec [command]
在Shell脚本中,
exec
命令常用于替换当前脚本的进程,以便在脚本执行过程中将控制权交给其他命令或脚本。示例:
#!/bin/bash exec ls echo "这行代码不会被执行"
这个示例中,脚本执行到
exec ls
时,将替换当前脚本的进程为ls
命令,因此后续的代码将不会被执行。
exec
命令的主要作用是替换当前进程,因此在使用时需要注意当前进程的环境和状态会被完全替换。正确使用exec
命令可以提供灵活的进程控制和环境切换能力,但需要注意在替换进程之后的代码将不再执行。
export-设置环境变量
在Linux命令中,export
命令用于设置环境变量,并将其导出给子进程使用。环境变量是一种存储系统配置和运行时信息的变量,可以在不同的进程中共享和使用。export
命令的语法如下:
export [变量名]=[值]
以下是export
命令的几个有代表性的例子:
-
设置单个环境变量:
export PATH=/usr/local/bin:$PATH
这个示例将将
PATH
环境变量设置为/usr/local/bin
,并将其添加到现有的PATH
值之前。这样可以确保在执行命令时先搜索/usr/local/bin
目录。 -
设置多个环境变量:
export VAR1=value1 export VAR2=value2
这个示例演示了如何同时设置多个环境变量。每个
export
命令设置一个变量和对应的值。 -
导出变量给子进程:
export MY_VARIABLE
这个示例将当前Shell中的
MY_VARIABLE
环境变量导出给子进程。子进程将继承该变量,并可以在其执行环境中访问和使用它。 -
查看已导出的环境变量:
export
这个示例将显示当前Shell中所有已导出的环境变量及其值。
-
临时设置环境变量:
export VAR=value
command
这个示例演示了如何在执行单个命令时临时设置环境变量。通过在命令前面使用
export
命令设置变量,该变量仅在该命令的执行过程中生效,不影响当前Shell的环境变量。
注意事项:
- 使用
export
命令设置的环境变量只在当前Shell会话中有效,对于新的Shell会话需要重新设置。 export
命令只能导出已经存在的变量,如果变量不存在,则会将其导出为空值。
通过使用export
命令,可以方便地设置和共享环境变量,以满足不同程序和进程的配置需求。
unset-取消设置的环境变量
在Linux命令中,unset
命令用于删除已设置的环境变量或取消变量的导出。它可以用于清除不再需要的环境变量,或者在需要时取消将变量导出给子进程。unset
命令的语法如下:
unset [变量名]
以下是unset
命令的几个有代表性的例子:
-
删除单个环境变量:
unset VAR
这个示例将删除名为
VAR
的环境变量。 -
删除多个环境变量:
unset VAR1 VAR2
这个示例演示了如何一次性删除多个环境变量。每个变量名之间用空格分隔。
-
取消变量的导出:
unset -v MY_VARIABLE
这个示例将取消已导出给子进程的
MY_VARIABLE
环境变量。子进程将不再继承该变量。 -
清除所有环境变量:
unset $(env | grep -o '^[^=]*')
这个示例使用一个命令组合来清除当前Shell中的所有环境变量。它使用
env
命令获取所有环境变量的列表,然后使用grep
命令匹配所有等号之前的文本,并将其传递给unset
命令进行删除。 -
删除函数:
unset -f function_name
这个示例将删除名为
function_name
的函数。
注意事项:
- 使用
unset
命令删除的环境变量只在当前Shell会话中生效,对于新的Shell会话需要重新设置。 unset
命令只能删除已存在的环境变量或函数,如果变量或函数不存在,则不会产生任何影响。
通过使用unset
命令,可以方便地删除环境变量和函数,以及取消变量的导出,从而管理和清理系统的配置和运行环境。
type-显示命令的类型(内建命令、外部命令、别名等)
在Linux命令中,type
命令用于显示命令的类型。它可以告诉你一个命令是内置命令、外部命令还是别名。它还提供了命令的详细信息,例如命令的路径和定义。type
命令的语法如下:
type [选项] [命令]
以下是type
命令的几个有代表性的例子:
-
显示命令类型:
type ls
这个示例将显示
ls
命令的类型。它会告诉你是一个内置命令、外部命令还是别名。 -
显示命令的详细信息:
type -a ls
这个示例将显示
ls
命令的详细信息。它会列出所有与ls
命令相关的定义,包括内置命令、外部命令和别名。 -
显示别名的定义:
type -t ll
这个示例将显示
ll
命令的定义类型。如果ll
是ls
的别名,它会输出alias
。 -
显示函数的定义:
type -t my_function
这个示例将显示名为
my_function
的函数的定义类型。如果my_function
是一个已定义的函数,它会输出function
。 -
显示命令的完整路径:
type -p grep
这个示例将显示
grep
命令的完整路径。它会输出/bin/grep
或者类似的路径。
通过使用type
命令,你可以了解一个命令是如何定义和实现的,以及它是内置的还是外部的。这对于理解命令的来源和执行方式非常有用,特别是在处理复杂的命令环境和调试脚本时。
bc-用于进行数学运算和数值比较
在Linux命令中,bc
命令用于进行数学计算。它是一个高精度计算器,支持整数和浮点数运算,提供了丰富的数学函数和表达式求解功能。你可以在命令行中使用bc
命令,也可以将其用于脚本编程。下面是bc
命令的一些常用用法和代表性示例:
-
使用
bc
进行基本计算:echo "2 + 3" | bc
这个示例使用
bc
计算了2加3的结果。通过管道将计算表达式传递给bc
命令,它将返回计算结果。 -
使用变量进行计算:
echo "x = 5; y = 3; x * y" | bc
这个示例使用
bc
计算了变量x
和y
的乘积。在表达式中使用分号来分隔不同的语句。 -
进行浮点数计算:
echo "scale=2; 10 / 3" | bc
这个示例使用
bc
计算了10除以3的结果,并将结果保留两位小数。通过设置scale
变量的值来指定结果的小数位数。 -
使用数学函数:
echo "scale=2; sqrt(9)" | bc -l
这个示例使用
bc
计算了数字9的平方根。通过使用-l
选项加载数学库,你可以使用各种数学函数,如平方根、三角函数、指数函数等。 -
从文件中执行计算:
bc -l < script.bc
这个示例从一个包含
bc
计算表达式的文件中执行计算。你可以将多个计算表达式保存在一个脚本文件中,并通过重定向将其传递给bc
命令进行执行。
bc
命令还提供了许多其他选项和功能,例如循环、条件语句、变量赋值等,使其成为一个强大的数学计算工具。你可以使用man bc
命令查看bc
命令的完整文档,了解更多详细信息和用法示例。
14 系统监控
chkconfig-管理系统服务的启动项
在Linux命令中,chkconfig
命令用于管理系统服务的运行级别设置。它允许你配置哪些服务在特定运行级别下启动或停止。chkconfig
命令通常用于管理系统引导过程中需要自动启动的服务。下面是chkconfig
命令的一些常用用法和代表性示例:
-
显示服务的配置状态:
chkconfig --list
这个命令将显示系统中所有服务的配置状态,包括服务的名称、运行级别的启动状态等。
-
启用服务:
chkconfig <service> on
这个命令将在所有运行级别下启用指定的服务。你需要将
<service>
替换为实际的服务名称。 -
禁用服务:
chkconfig <service> off
这个命令将在所有运行级别下禁用指定的服务。同样,你需要将
<service>
替换为实际的服务名称。 -
指定运行级别启用或禁用服务:
chkconfig --level <runlevel> <service> on chkconfig --level <runlevel> <service> off
这个命令允许你在特定的运行级别下启用或禁用指定的服务。你需要将
<runlevel>
替换为运行级别(如0、1、2等),将<service>
替换为实际的服务名称。 -
显示特定服务在不同运行级别下的启动状态:
chkconfig --list <service>
这个命令将显示指定服务在各个运行级别下的启动状态。
-
更改服务的默认启动级别:
chkconfig --level <runlevel> <service> reset
这个命令将更改指定服务的默认启动级别为指定的运行级别。你需要将
<runlevel>
替换为运行级别(如3、5等),将<service>
替换为实际的服务名称。
注意:chkconfig
命令的具体用法可能会因Linux发行版而有所差异。在某些发行版中,可能已经被systemctl
命令所取代。建议使用man chkconfig
命令查看特定发行版的文档以了解更详细的用法和选项。
vmstat-显示系统虚拟内存、进程、IO等统计
在Linux命令中,vmstat
命令用于报告虚拟内存的统计信息,包括系统的整体状态、进程的活动情况、内存使用情况、交换空间、I/O活动等。它提供了一种实时监视系统性能的方式。下面是vmstat
命令的一些常用用法和代表性示例:
-
显示系统整体状态:
vmstat
这个命令将显示系统的整体状态,包括运行队列长度、上下文切换次数、CPU使用情况、内存使用情况、交换空间使用情况、磁盘I/O等。
-
指定时间间隔和次数:
vmstat <interval> <count>
这个命令将按照指定的时间间隔(以秒为单位)和次数显示系统状态。例如,
vmstat 5 10
将每5秒显示一次系统状态,总共显示10次。 -
仅显示特定字段:
vmstat -<options>
通过使用不同的选项,可以仅显示
vmstat
输出中的特定字段。例如,vmstat -r
仅显示内存统计信息,vmstat -d
仅显示磁盘I/O统计信息。 -
以可读的格式显示输出:
vmstat -S <unit>
这个命令将以可读的格式显示
vmstat
输出,其中<unit>
可以是k
(千字节)、m
(兆字节)或g
(吉字节)。 -
仅显示进程活动情况:
vmstat -p <pid>
这个命令将仅显示指定进程的活动情况,其中
<pid>
是进程ID。 -
仅显示指定的虚拟内存统计信息:
vmstat -s <keyword>
这个命令将仅显示指定关键字的虚拟内存统计信息。例如,
vmstat -s swap
将显示有关交换空间的统计信息。
注意:vmstat
命令的具体用法和输出格式可能会因不同的Linux发行版而有所差异。建议使用man vmstat
命令查看特定发行版的文档以了解更详细的用法和选项。
mpstat-显示多处理器系统CPU使用情况
在Linux命令中,mpstat
命令用于报告多处理器系统的每个处理器的性能统计信息,包括CPU利用率、上下文切换次数、中断和软中断等。它提供了一种监视多处理器系统的方式。下面是mpstat
命令的一些常用用法和代表性示例:
-
显示系统整体的CPU统计信息:
mpstat
这个命令将显示系统整体的CPU利用率、上下文切换次数、中断和软中断等统计信息。
-
显示指定处理器的CPU统计信息:
mpstat -P <processor>
这个命令将显示指定处理器的CPU利用率和其他统计信息,其中
<processor>
是处理器的编号,从0开始。 -
指定时间间隔和次数:
mpstat <interval> <count>
这个命令将按照指定的时间间隔(以秒为单位)和次数显示系统的CPU统计信息。例如,
mpstat 5 10
将每5秒显示一次系统的CPU统计信息,总共显示10次。 -
以可读的格式显示输出:
mpstat -P ALL -I ALL -u
这个命令将以可读的格式显示所有处理器的CPU利用率,并包括每个处理器的中断和软中断统计信息。
-
仅显示指定字段:
mpstat -P ALL -u -I CPU
这个命令将仅显示所有处理器的CPU利用率和CPU中断统计信息。
-
显示内存统计信息:
mpstat -s
这个命令将显示系统的内存统计信息,包括内存的总量、空闲量、使用量等。
注意:mpstat
命令的具体用法和输出格式可能会因不同的Linux发行版而有所差异。建议使用man mpstat
命令查看特定发行版的文档以了解更详细的用法和选项。
iostat-显示磁盘IO统计
在Linux命令中,iostat
命令用于报告系统的磁盘和输入/输出(I/O)设备的统计信息,包括磁盘利用率、传输速率、响应时间等。它提供了一种监视系统磁盘和I/O性能的方式。下面是iostat
命令的一些常用用法和代表性示例:
-
显示系统整体的磁盘和I/O统计信息:
iostat
这个命令将显示系统整体的磁盘利用率、传输速率、响应时间等统计信息。
-
指定设备和时间间隔:
iostat -d <device> <interval>
这个命令将显示指定设备的磁盘和I/O统计信息,其中
<device>
是设备名称,可以是磁盘分区或块设备文件,<interval>
是刷新数据的时间间隔(以秒为单位)。 -
以可读的格式显示输出:
iostat -x
这个命令将以可读的格式显示系统整体的磁盘和I/O统计信息,包括传输速率、响应时间、等待时间等。
-
仅显示指定字段:
iostat -k -t -p <device>
这个命令将仅显示指定设备的磁盘和I/O统计信息,并以KB为单位显示传输速率,包括时间戳信息。
-
显示所有设备的磁盘和I/O统计信息:
iostat -d -x
这个命令将显示所有设备的磁盘和I/O统计信息,以可读的格式显示传输速率、响应时间、等待时间等。
注意:iostat
命令的具体用法和输出格式可能会因不同的Linux发行版而有所差异。建议使用man iostat
命令查看特定发行版的文档以了解更详细的用法和选项。
sar-系统性能监控工具,提供系统资源历史数据
在Linux命令中,sar
命令用于收集和报告系统性能数据,包括CPU利用率、内存使用、磁盘活动、网络统计等。它是系统管理员和性能分析师常用的工具之一。下面是sar
命令的一些常用用法和代表性示例:
-
显示系统整体的CPU利用率:
sar -u
这个命令将显示系统整体的CPU利用率,包括用户态、系统态和空闲时间等。
-
显示系统整体的内存使用情况:
sar -r
这个命令将显示系统整体的内存使用情况,包括空闲内存、使用的内存、缓存等。
-
显示系统整体的磁盘活动情况:
sar -d
这个命令将显示系统整体的磁盘活动情况,包括读写速率、响应时间等。
-
显示系统整体的网络统计信息:
sar -n DEV
这个命令将显示系统整体的网络统计信息,包括网络接口的数据传输、错误、丢包等。
-
指定时间间隔和统计次数:
sar -u 5 10
这个命令将每隔5秒收集一次系统整体的CPU利用率,共收集10次。
-
保存数据到文件:
sar -o output.txt
这个命令将将收集的数据保存到指定的文件中。
注意:sar
命令的具体用法和输出格式可能会因不同的Linux发行版而有所差异。建议使用man sar
命令查看特定发行版的文档以了解更详细的用法和选项。
ipcs-显示共享内存、消息队列和信号量信息
在Linux命令中,ipcs
命令用于显示进程间通信(IPC)对象的状态,包括消息队列、信号量和共享内存等。它允许用户查看系统上当前存在的IPC对象的信息。下面是ipcs
命令的一些常用用法和代表性示例:
-
显示所有IPC对象的摘要信息:
ipcs
这个命令将显示系统上所有IPC对象的摘要信息,包括对象类型、标识符、所有者等。
-
显示指定类型的IPC对象:
ipcs -q # 显示消息队列 ipcs -s # 显示信号量 ipcs -m # 显示共享内存
这些命令将显示指定类型的IPC对象的详细信息。
-
显示特定对象的详细信息:
ipcs -q -i <msqid> # 显示指定消息队列的详细信息 ipcs -s -i <semid> # 显示指定信号量的详细信息 ipcs -m -i <shmid> # 显示指定共享内存的详细信息
这些命令将显示指定IPC对象的详细信息,包括对象的大小、权限、关联进程等。
-
显示某个用户的IPC对象:
ipcs -u <username> # 显示指定用户的IPC对象
这个命令将显示指定用户的IPC对象的信息。
-
显示IPC对象的更多信息:
ipcs -l # 显示IPC限制信息 ipcs -t # 显示IPC对象的时间信息
这些命令将显示IPC对象的更多信息,包括限制信息和时间信息。
注意:ipcs
命令的具体用法和输出格式可能会因不同的Linux发行版而有所差异。建议使用man ipcs
命令查看特定发行版的文档以了解更详细的用法和选项。
ipcrm-删除共享内存、消息队列或信号量
在Linux命令中,ipcrm
命令用于删除进程间通信(IPC)对象,包括消息队列、信号量和共享内存等。它允许用户删除系统上存在的IPC对象。下面是ipcrm
命令的一些常用用法和代表性示例:
-
删除指定类型的IPC对象:
ipcrm -q <msqid> # 删除指定消息队列 ipcrm -s <semid> # 删除指定信号量 ipcrm -m <shmid> # 删除指定共享内存
这些命令将删除指定类型的IPC对象。
-
删除所有IPC对象:
ipcrm -a # 删除所有IPC对象
这个命令将删除系统上的所有IPC对象。
-
删除指定用户的IPC对象:
ipcrm -Q -u <username> # 删除指定用户的消息队列 ipcrm -S -u <username> # 删除指定用户的信号量 ipcrm -M -u <username> # 删除指定用户的共享内存
这些命令将删除指定用户拥有的IPC对象。
-
删除指定标识符的IPC对象:
ipcrm -Q -i <msqid> # 删除指定消息队列标识符的对象 ipcrm -S -i <semid> # 删除指定信号量标识符的对象 ipcrm -M -i <shmid> # 删除指定共享内存标识符的对象
这些命令将删除指定标识符的IPC对象。
注意:使用ipcrm
命令删除IPC对象时要小心,确保仅删除不再需要的对象。删除IPC对象可能会导致相关的程序无法正常运行。在删除IPC对象之前,请确保对其影响有充分的了解。建议使用man ipcrm
命令查看特定发行版的文档以了解更详细的用法和选项。
strace-跟踪系统调用和信号
在Linux命令中,strace
命令用于跟踪执行过程中的系统调用和信号。它可以帮助调试程序或了解程序的运行情况。下面是strace
命令的一些常用用法和代表性示例:
-
跟踪程序的系统调用:
strace <command> # 跟踪执行给定命令的系统调用
这个命令将运行给定的命令,并输出程序执行期间发生的系统调用及其相关信息。
-
保存跟踪结果到文件:
strace -o <output_file> <command> # 将跟踪结果保存到指定文件
这个命令将跟踪结果输出到指定的文件中,方便后续分析和调试。
-
显示系统调用的参数和返回值:
strace -e trace=<syscall> <command> # 仅跟踪指定的系统调用
这个命令将仅跟踪指定的系统调用,并显示每个系统调用的参数和返回值。
-
跟踪子进程的系统调用:
strace -f <command> # 跟踪子进程的系统调用
这个命令将跟踪程序及其所有子进程的系统调用。
-
跟踪系统调用的执行时间:
strace -T <command> # 显示系统调用的执行时间
这个命令将显示每个系统调用的执行时间,帮助定位程序的性能瓶颈。
注意:strace
命令需要在具有调试权限的环境中运行,并且可能会对程序的性能产生一定影响。建议在调试和分析需要时使用strace
命令,避免在生产环境中滥用。建议使用man strace
命令查看特定发行版的文档以了解更详细的用法和选项。
ltrace-网络数据包跟踪工具
在Linux命令中,ltrace
命令用于跟踪程序执行期间的库函数调用。它可以帮助了解程序的调用流程、检测问题或优化代码。下面是ltrace
命令的一些常用用法和代表性示例:
-
跟踪程序的库函数调用:
ltrace <command> # 跟踪执行给定命令的库函数调用
这个命令将运行给定的命令,并输出程序执行期间调用的库函数及其相关信息。
-
保存跟踪结果到文件:
ltrace -o <output_file> <command> # 将跟踪结果保存到指定文件
这个命令将跟踪结果输出到指定的文件中,方便后续分析和调试。
-
仅跟踪指定的库函数调用:
ltrace -e <function> <command> # 仅跟踪指定的库函数调用
这个命令将仅跟踪指定的库函数调用,并显示每个函数调用的参数和返回值。
-
跟踪子进程的库函数调用:
ltrace -f <command> # 跟踪子进程的库函数调用
这个命令将跟踪程序及其所有子进程的库函数调用。
-
过滤输出结果:
ltrace -C <command> # 格式化输出结果并合并重复的调用
这个命令将格式化输出结果,合并重复的调用,并显示调用次数。
注意:ltrace
命令需要在具有调试权限的环境中运行,并且可能会对程序的性能产生一定影响。建议在调试和分析需要时使用ltrace
命令,避免在生产环境中滥用。建议使用man ltrace
命令查看特定发行版的文档以了解更详细的用法和选项。
15 关机和重启
shutdown-关闭系统并控制系统的停机
在Linux中,shutdown
命令用于安全地关闭系统或重新启动系统。它提供了灵活的选项,使您能够指定关闭时间、发送通知消息以及执行其他操作。下面是shutdown
命令的一些常用用法和代表性示例:
-
关闭系统:
shutdown -h now # 立即关闭系统
这个命令将立即关闭系统,并发送通知消息给所有登录用户。
-
重启系统:
shutdown -r now # 立即重启系统
这个命令将立即重启系统,并发送通知消息给所有登录用户。
-
定时关闭系统:
shutdown -h +10 # 十分钟后关闭系统
这个命令将在当前时间的十分钟后关闭系统,并发送通知消息给所有登录用户。
-
取消已计划的关机或重启:
shutdown -c # 取消已计划的关机或重启
这个命令将取消之前使用
shutdown
命令计划的关机或重启操作。 -
发送通知消息:
shutdown -r +5 "系统将在五分钟后重启,请保存您的工作。" # 发送定时重启的通知消息
这个命令将在五分钟后重启系统,并向所有登录用户发送自定义的通知消息。
注意:shutdown
命令需要root或具有sudo权限的用户才能运行。在执行关机或重启操作之前,请确保保存并关闭所有重要的工作和文件。建议在执行关机或重启操作之前提前通知所有用户,并确保系统处于安全状态。建议使用man shutdown
命令查看特定发行版的文档以了解更详细的用法和选项。
halt-停止系统运行
在Linux中,halt
命令用于立即关闭系统。它是一种关机命令,与shutdown
命令相似,但它不会发送通知消息或执行其他操作。下面是halt
命令的一些常用用法和代表性示例:
-
关闭系统:
halt # 关闭系统
这个命令将立即关闭系统,停止所有进程并关闭计算机。
-
关闭系统并发送通知消息:
halt -p # 关闭系统并发送通知消息
这个命令将立即关闭系统,并发送通知消息给所有登录用户。
-
强制关闭系统:
halt -f # 强制关闭系统
这个命令将立即关闭系统,无论是否有其他进程仍在运行。
-
定时关闭系统:
halt -t 10 # 十秒后关闭系统
这个命令将在当前时间的十秒后关闭系统。
注意:halt
命令需要root或具有sudo权限的用户才能运行。在执行关机操作之前,请确保保存并关闭所有重要的工作和文件。强制关闭系统可能导致数据丢失或损坏,建议谨慎使用。建议提前通知所有用户,并确保系统处于安全状态。建议使用man halt
命令查看特定发行版的文档以了解更详细的用法和选项。
poweroff-关闭系统电源
在Linux中,poweroff
命令用于立即关闭系统并断开电源。使用该命令将立即停止所有进程并关闭系统。以下是poweroff
命令的一些常见用法和代表性示例:
-
关闭系统:
poweroff # 立即关闭系统
这个命令将立即关闭系统,并断开电源。
-
发送关机通知消息:
poweroff -n "系统将在五分钟后关闭,请保存您的工作。" # 发送关机通知消息
这个命令将发送自定义的通知消息给所有登录用户,并在五分钟后关闭系统。
-
关闭指定时间:
poweroff -d 22:00 # 在指定时间(22:00)关闭系统
这个命令将计划在指定时间关闭系统。请注意,您需要具有root或sudo权限才能计划延迟关机。
注意:使用poweroff
命令会立即关闭系统,并且不会提供任何计划或定时功能。在执行关机操作之前,请确保保存并关闭所有重要的工作和文件。建议提前通知所有用户,并确保系统处于安全状态。请注意,某些系统可能使用不同的命令,例如halt
或init 0
,以实现相同的功能。建议查看特定发行版的文档以了解更多细节。
logout-注销当前用户登录会话
在Linux中,logout
命令用于注销当前用户的登录会话。当您在终端或控制台中登录后,可以使用该命令退出登录并返回登录界面或重新登录。下面是logout
命令的一些常用用法和代表性示例:
-
注销当前用户:
logout
这个命令将注销当前用户,并返回登录界面或重新登录。
-
使用快捷键注销:
Ctrl + D
在终端中,您可以使用
Ctrl + D
组合键快速注销当前用户。 -
执行命令后注销:
command; logout
这个命令将在执行完指定的命令后注销当前用户。例如:
ls; logout
执行完
ls
命令后将注销当前用户。 -
使用
exec
命令注销:exec logout
这个命令将使用
exec
命令替换当前的shell会话,并注销用户。
请注意,logout
命令只能注销当前用户,并且通常在交互式登录环境下使用。如果您是通过SSH或远程连接登录到系统的,使用logout
命令将关闭连接,而不仅仅是注销用户。此外,某些终端仿真器可能不支持logout
命令,您可以尝试使用快捷键Ctrl + D
来注销。
exit-退出当前 shell 或终端会话
在Linux命令行中,exit
命令用于退出当前的Shell会话。它可以用于终止当前的终端窗口或退出当前的Shell环境。下面是exit
命令的一些常见用法和代表性示例:
-
退出当前的Shell会话:
exit
这个命令将终止当前的Shell会话,并关闭相关的终端窗口或退出当前的Shell环境。
-
设置退出状态码:
exit 0
这个命令将退出当前的Shell会话,并设置退出状态码为0。退出状态码用于指示上一个命令或脚本的执行结果,0表示成功,非零值表示错误。
-
退出并执行登录Shell:
exit --login
这个命令将退出当前的Shell会话,并启动一个新的登录Shell会话。这将导致重新加载登录配置文件,例如
.bash_profile
或.bashrc
。 -
退出并指定退出状态码:
exit 1
这个命令将退出当前的Shell会话,并设置退出状态码为1。这表示上一个命令或脚本执行失败。
注意:exit
命令只能用于终端窗口或Shell会话中,而不能在Shell脚本中使用。在Shell脚本中,可以使用return
语句来指定退出状态码。
退出状态码通常在脚本中使用,以便在脚本执行完毕后可以根据状态码进行进一步的处理或判断。如果不指定退出状态码,默认情况下,exit
命令将使用上一个命令的退出状态码作为其自己的退出状态码。使用man exit
命令可以查看更详细的用法和选项。
16 进程管理
bg-将作业放入后台运行
在Linux命令行中,bg
命令用于将一个被停止(暂停)的作业(Job)转为后台运行。当您在前台运行一个命令时,可以使用bg
命令将其切换到后台,以便在后台继续运行而不占用当前终端的控制。
下面是bg
命令的一些常见用法和代表性示例:
-
将最近的停止作业切换到后台:
bg
这个命令将最近被停止的作业切换到后台继续运行。
-
将指定作业切换到后台:
bg %1 # 将作业编号为1的作业切换到后台
这个命令将作业编号为1的作业切换到后台继续运行。
-
列出当前正在运行的作业并选择一个作业切换到后台:
jobs # 列出当前作业列表 bg %2 # 将作业编号为2的作业切换到后台
这个命令首先列出当前正在运行的作业,然后根据需要选择一个作业切换到后台。
-
将前台运行的命令切换到后台:
在前台运行一个命令时,按下Ctrl + Z
将其暂停,然后使用bg
命令将其切换到后台。command_name # 在前台运行一个命令 Ctrl + Z # 暂停该命令 bg # 将该命令切换到后台
这个命令将前台运行的命令切换到后台继续运行。
注意:使用bg
命令切换作业到后台后,作业将继续在后台运行,不会在终端显示输出。如果需要查看或操作后台作业,请使用jobs
命令查看作业列表,或使用fg
命令将作业切换回前台。
这些是bg
命令的一些常见用法和示例。您可以使用man bg
命令查看特定发行版的文档,了解更详细的用法和选项。
fg-将作业放回前台运行
在Linux命令行中,fg
命令用于将一个在后台运行的作业(job)切换到前台运行。它通常与bg
命令(将作业切换到后台)一起使用,用于管理作业的状态。下面是fg
命令的一些常用用法和示例:
-
将最近的后台作业切换到前台:
fg
这个命令将把最近在后台运行的作业切换到前台运行。
-
将指定作业切换到前台:
fg %1
这个命令将作业号为1的后台作业切换到前台运行。
-
恢复挂起的作业到前台:
fg -l
这个命令将显示当前所有挂起的作业,并允许您选择将哪个作业切换到前台运行。
-
将作业切换到前台并保持运行:
fg %2
这个命令将作业号为2的后台作业切换到前台运行,并继续其执行。
注意:fg
命令仅适用于在后台运行的作业。它用于将作业切换到前台以便与其交互。如果没有后台作业或没有指定作业号,fg
命令将显示错误信息。可以使用jobs
命令查看当前运行的作业和作业号。
jobs-显示当前 shell 的作业列表
在Linux中,jobs
命令用于显示当前在后台运行的作业(即以&
符号运行的命令)。它可以列出作业的编号和状态,并提供一些操作选项。下面是jobs
命令的一些常用用法和代表性示例:
-
列出当前作业:
jobs # 列出当前在后台运行的作业
这个命令将显示当前所有在后台运行的作业的编号和状态。
-
将作业置于前台运行:
fg %1 # 将编号为1的作业置于前台运行
这个命令将编号为1的作业从后台调至前台运行。
-
将作业置于后台运行:
bg %2 # 将编号为2的作业置于后台运行
这个命令将编号为2的作业从前台调至后台运行。
-
终止作业:
kill %3 # 终止编号为3的作业
这个命令将终止编号为3的作业。
-
列出作业状态:
jobs -l # 列出作业的详细状态信息
这个命令将显示作业的详细状态信息,包括作业编号、PID(进程ID)、作业状态等。
注意:jobs
命令仅能显示当前终端会话中的作业信息。如果您在多个终端会话中运行了后台作业,则需要在相应的会话中使用jobs
命令来查看该会话中的作业信息。如果作业已完成或被终止,它们将不再显示在jobs
命令的输出中。建议使用man jobs
命令查看特定发行版的文档以了解更详细的用法和选项。
kill-终止指定的进程
在Linux中,kill
命令用于发送信号给指定的进程,以控制其行为。通过发送不同的信号,可以实现不同的操作,如终止进程、重新加载配置文件、重新启动进程等。下面是kill
命令的一些常用用法和代表性示例:
-
终止进程:
kill <PID> # 终止指定进程
这个命令将发送默认的终止信号(SIGTERM)给指定进程,使其正常终止。
-
强制终止进程:
kill -9 <PID> # 强制终止指定进程
这个命令将发送强制终止信号(SIGKILL)给指定进程,无论进程是否响应都会被立即终止。
-
重新加载配置文件:
kill -HUP <PID> # 重新加载配置文件
这个命令将发送重新加载配置文件的信号(SIGHUP)给指定进程,使其重新加载配置文件,通常用于服务器软件的配置更新。
-
列出可用的信号:
kill -l # 列出所有可用的信号
这个命令将列出系统支持的所有信号及其对应的编号。
-
通过进程名称终止进程:
pkill <process_name> # 终止指定名称的进程
这个命令将根据进程名称终止匹配的进程,类似于
kill
命令,但可以直接使用进程名称而无需指定进程ID。
注意:在使用kill
命令终止进程时,请谨慎操作,确保只终止您想要终止的进程。使用kill
命令时,可以使用进程ID(PID)或进程名称来标识要操作的进程。可以使用ps
命令或pgrep
命令来获取进程ID或进程名称。建议在终止进程之前,尝试使用默认的终止信号(SIGTERM),如果进程不响应,则可以使用强制终止信号(SIGKILL)。使用man kill
命令查看特定发行版的文档以了解更详细的用法和选项。
killall-终止指定名称的所有进程
在Linux中,killall
命令用于通过进程名称来终止正在运行的进程。它会根据进程名来查找并发送信号给与之匹配的所有进程。下面是killall
命令的一些常用用法和代表性示例:
-
终止指定进程:
killall firefox # 终止所有名为firefox的进程
这个命令将终止所有名为firefox的进程。
-
终止多个进程:
killall -r 'myapp.*' # 终止名称以myapp开头的所有进程
这个命令使用正则表达式
'myapp.*'
匹配名称以myapp开头的所有进程,并终止它们。 -
发送不同的信号:
killall -s HUP myapp # 发送HUP信号给名为myapp的进程
这个命令将发送HUP信号给名为myapp的进程,可以用于重新加载配置或重新启动进程。
-
安静模式:
killall -q myapp # 安静模式,不显示警告消息
这个命令在终止进程时不显示警告消息,只输出错误信息(如果有)。
-
显示进程信息:
killall -l # 列出所有可用的信号
这个命令将列出所有可用的信号,可以用于参考信号编号。
注意:killall
命令可以终止与指定进程名称匹配的所有进程,因此请谨慎使用。确保您指定了正确的进程名称,并且仅终止您希望终止的进程。建议使用man killall
命令查看特定发行版的文档以了解更详细的用法和选项。
pkill-通过进程名终止匹配的进程
在Linux中,pkill
命令用于根据进程名或其他条件来终止或信号处理进程。它通过匹配进程名或其他属性来选择要终止的进程,并向其发送指定的信号。下面是pkill
命令的一些常用用法和代表性示例:
-
根据进程名终止进程:
pkill firefox # 终止所有名为"firefox"的进程
这个命令将终止所有名为"firefox"的进程。
-
使用信号终止进程:
pkill -SIGTERM firefox # 向所有名为"firefox"的进程发送SIGTERM信号
这个命令将向所有名为"firefox"的进程发送SIGTERM信号,请求它们正常终止。
-
根据用户终止进程:
pkill -u username # 终止属于指定用户的所有进程
这个命令将终止属于指定用户名的所有进程。
-
使用正则表达式终止进程:
pkill -f "pattern" # 根据正则表达式模式终止匹配的进程
这个命令将终止匹配指定正则表达式模式的进程。
-
向进程发送不同的信号:
pkill -9 firefox # 终止所有名为"firefox"的进程并强制终止
这个命令将向所有名为"firefox"的进程发送SIGKILL信号,强制终止它们。
注意:使用pkill
命令时要小心,确保只终止您想要终止的进程。请谨慎使用强制终止信号(如SIGKILL),因为它们会直接终止进程而不经过正常的清理过程。建议在使用pkill
命令之前先使用pgrep
命令来查找匹配的进程,并确保您选择正确的进程进行终止。
crontab-编辑或查看用户的定时任务
在Linux中,crontab
命令用于创建、编辑和管理用户的定时任务(cron jobs)。定时任务是一种在指定时间间隔或特定时间点自动执行的任务。crontab
命令允许用户创建一个包含任务执行时间和要执行的命令的定时任务列表。下面是crontab
命令的一些常用用法和代表性示例:
-
查看当前用户的定时任务列表:
crontab -l
这个命令将显示当前用户的定时任务列表。
-
编辑当前用户的定时任务列表:
crontab -e
这个命令将打开一个文本编辑器,允许您编辑当前用户的定时任务列表。
-
删除当前用户的定时任务列表:
crontab -r
这个命令将删除当前用户的定时任务列表。
-
添加定时任务:
crontab -e
在打开的编辑器中添加以下行:
* * * * * command
这个示例将在每分钟执行一次
command
命令。 -
指定特定时间间隔:
0 0 * * * command
这个示例将在每天的午夜执行
command
命令。 -
使用通配符:
*/5 * * * * command
这个示例将在每个小时的每五分钟执行一次
command
命令。 -
定义命令执行时间范围:
0 9-17 * * 1-5 command
这个示例将在每个工作日的上午9点到下午5点之间的每个整点执行
command
命令。
注意:定时任务的时间格式为分钟 小时 日期 月份 星期
,使用空格或制表符分隔。对于每个字段,可以使用具体的数值、范围、通配符(*
)以及其他特定的字符来定义任务执行时间。建议使用man crontab
命令查看更详细的用法和选项,并根据您的需求创建适合的定时任务。
ps-显示系统中运行的进程状态
在Linux中,ps
命令用于显示当前运行的进程信息。它提供了各种选项,可以显示不同级别的进程信息,如运行中的进程、系统进程、用户进程等。下面是ps
命令的一些常用用法和代表性示例:
-
显示当前所有进程:
ps -e # 显示所有进程
这个命令将显示所有当前运行的进程,包括系统进程和用户进程。
-
显示指定用户的进程:
ps -u username # 显示指定用户的进程
这个命令将显示指定用户名的进程,包括系统进程和用户进程。
-
显示详细进程信息:
ps -ef # 显示详细进程信息
这个命令将显示所有进程的详细信息,包括进程的PID、父进程的PID、运行状态等。
-
查找特定进程:
ps -aux | grep process_name # 查找特定进程
这个命令将通过管道符将
ps
命令的输出传递给grep
命令,以查找包含特定进程名称的进程。 -
显示进程树:
ps -ejH # 显示进程树
这个命令将显示进程树,以层次结构的形式展示进程及其子进程的关系。
注意:ps
命令提供了许多选项和标志,可以根据需要进行调整。建议使用man ps
命令查看特定发行版的文档以了解更详细的用法和选项。
pstree-以树状图显示进程及其子进程
在Linux中,pstree
命令用于以树形结构显示进程之间的父子关系。它以易于理解的方式显示进程的层次结构,可以帮助您快速了解进程之间的关系。下面是pstree
命令的一些常用用法和代表性示例:
-
显示整个进程树:
pstree
这个命令将显示当前系统中所有进程的树形结构。
-
显示指定进程的树形结构:
pstree <pid>
这个命令将显示指定进程ID(pid)的树形结构,其中包括该进程的子进程和父进程。
-
以ASCII字符形式显示进程树:
pstree -a
这个命令将以ASCII字符形式显示进程树,可用于在终端中查看更多的进程信息。
-
显示进程命令行参数:
pstree -c
这个命令将显示每个进程的命令行参数,帮助您更好地理解进程的功能。
-
以宽格式显示进程树:
pstree -w
这个命令将以宽格式显示进程树,使您能够查看更长的命令行参数和进程名称。
-
仅显示指定用户的进程树:
pstree -u <username>
这个命令将只显示属于指定用户名的进程树,可以帮助您快速定位某个用户相关的进程。
注意:pstree
命令默认以树形结构显示进程,每个进程由进程ID(PID)和进程名称组成。您可以通过使用不同的选项来自定义输出格式。建议使用man pstree
命令查看特定发行版的文档以了解更详细的用法和选项。
nice/renice-设置进程的优先级
在Linux中,nice
和renice
命令用于调整进程的优先级。进程的优先级决定了它在系统资源分配中的优先级。nice
命令用于启动新进程,并为其指定一个初始优先级值,而renice
命令用于修改已经运行的进程的优先级。下面是这两个命令的详细说明和一些代表性的例子:
-
nice
命令:
nice
命令用于启动新进程并设置其初始优先级。优先级值范围从-20(最高优先级)到+19(最低优先级),默认为0。使用语法:
nice [OPTION] [COMMAND [ARG]...]
示例:
nice -n 10 command # 使用优先级值10启动命令
这个命令将使用优先级值10启动指定的命令。
-
renice
命令:
renice
命令用于修改已经运行的进程的优先级。使用语法:
renice [OPTION] priority [[-p] pid [...]] [[-g] pgrp [...]] [[-u] user [...]]
示例:
renice -n 5 -p 1234 # 将进程ID为1234的进程优先级调整为5
这个命令将进程ID为1234的进程的优先级调整为5。
-
显示进程当前的优先级:
nice -n -20 top # 启动top命令,并将其优先级设置为最高
这个命令将以最高优先级启动top命令。
-
修改已运行进程的优先级:
renice -n 10 -p 1234 # 将进程ID为1234的进程优先级调整为10
这个命令将进程ID为1234的进程的优先级调整为10。
-
修改用户所有进程的优先级:
renice -n 5 -u user # 将用户所有进程的优先级调整为5
这个命令将指定用户所有进程的优先级调整为5。
注意:nice
和renice
命令需要root或具有sudo权限的用户才能调整其他用户的进程优先级。使用man nice
和man renice
命令查看特定发行版的文档以了解更详细的用法和选项。
nohup-在后台运行命令,不受终端关闭影响
在Linux中,nohup
命令用于在后台运行命令,并忽略所有挂断(SIGHUP)信号。这意味着即使用户注销或终端关闭,命令也将继续在后台运行。下面是nohup
命令的一些常用用法和代表性示例:
-
在后台运行命令:
nohup command & # 在后台运行命令
这个命令将以后台进程的形式运行给定的命令,并将输出重定向到当前目录下的
nohup.out
文件中。 -
在后台运行长时间运行的命令:
nohup long_running_command > output.txt 2>&1 &
这个命令将以后台进程的形式运行长时间运行的命令,并将输出重定向到
output.txt
文件中。2>&1
表示将标准错误输出(stderr)也重定向到标准输出(stdout)。 -
通过
nohup
保持SSH会话中的命令运行:ssh user@host 'nohup command &' # 在SSH会话中使用nohup
这个命令将通过SSH连接到远程主机,并在远程主机上以后台进程的形式运行给定的命令。
-
使用自定义的输出文件:
nohup command > output.txt 2>&1 & # 将输出重定向到自定义的文件
这个命令将以后台进程的形式运行命令,并将输出重定向到名为
output.txt
的自定义文件中。
注意:使用nohup
命令运行的命令会在后台继续运行,但它们仍然与当前终端会话相关联。如果关闭终端会话,则命令会受到终端的挂断信号而终止。为了解决这个问题,可以使用disown
命令或tmux
等工具将进程与终端会话分离。请注意,某些命令可能仍然会产生输出,因此建议将其输出重定向到文件,以便后续查看。
有关更详细的用法和选项,请使用man nohup
命令查看特定发行版的文档。
pgrep-通过进程名查找匹配的进程 ID
在Linux中,pgrep
命令用于根据进程名或其他属性查找正在运行的进程,并返回与查询条件匹配的进程ID(PID)。它提供了一种简单的方式来查找进程,以便进行进一步的操作。下面是pgrep
命令的一些常用用法和代表性示例:
-
根据进程名查找进程:
pgrep firefox # 查找名为firefox的进程
这个命令将返回所有名为firefox的进程的PID。
-
根据完整的命令行查找进程:
pgrep -f "python script.py" # 查找运行命令行为"python script.py"的进程
这个命令将返回所有正在运行命令行为"python script.py"的进程的PID。
-
根据用户查找进程:
pgrep -u username # 查找属于指定用户名的进程
这个命令将返回属于指定用户名的所有进程的PID。
-
结合其他命令使用:
kill $(pgrep -f "python script.py") # 结合kill命令杀死指定命令行的进程
这个命令将使用
pgrep
命令查找运行命令行为"python script.py"的进程,并将它们的PID传递给kill
命令以终止这些进程。
注意:pgrep
命令可以与其他命令结合使用,例如kill
命令来终止进程,或者ps
命令来获取进程的详细信息。建议使用man pgrep
命令查看特定发行版的文档以了解更详细的用法和选项。
runlevel-显示当前运行级别
在Linux中,runlevel
命令用于查看当前系统的运行级别。运行级别表示系统处于的操作模式,不同的运行级别对应着不同的服务和功能。下面是runlevel
命令的一些常用用法和代表性示例:
-
查看当前运行级别:
runlevel
这个命令将显示当前系统的运行级别,通常以前面的字母表示。
-
查看先前的运行级别:
runlevel -p
这个命令将显示上次系统的运行级别和当前运行级别。
-
切换到单用户模式:
telinit 1
这个命令将切换系统到单用户模式,也称为维护模式。在这个模式下,只有root用户可以登录,系统中的多数服务将被停止。
-
切换到图形用户界面:
telinit 5
这个命令将切换系统到图形用户界面模式,也称为多用户图形模式。在这个模式下,系统将启动图形界面登录。
注意:runlevel
命令需要root或具有sudo权限的用户才能运行。运行级别的配置和具体含义可能因Linux发行版而异,建议使用man runlevel
命令查看特定发行版的文档以了解更详细的用法和运行级别定义。
init-系统初始化进程
在Linux中,init
命令是一个特殊的进程,它是系统引导过程中的第一个进程(进程ID为1),负责初始化系统,并启动其他进程。init
命令通常由系统引导程序(如GRUB)调用,以启动Linux系统。以下是init
命令的一些常用用法和代表性示例:
-
切换运行级别:
init 3 # 切换到文本模式运行级别
这个命令将系统切换到文本模式运行级别,所有图形界面进程将被停止,并只保留基本的终端登录。
-
关闭系统:
init 0 # 关闭系统
这个命令将系统切换到关机运行级别,停止所有进程并关闭系统。
-
重启系统:
init 6 # 重启系统
这个命令将系统切换到重启运行级别,停止所有进程并重新启动系统。
-
单用户模式:
init 1 # 切换到单用户模式
这个命令将系统切换到单用户模式,只有一个控制台可用,并且只有root用户可以登录。
-
运行级别说明:
init 5 # 切换到图形模式运行级别
这个命令将系统切换到图形模式运行级别,启动图形界面并登录图形桌面环境。
注意:init
命令需要root或具有sudo权限的用户才能运行。在使用init
命令之前,请确保了解系统的运行级别配置和对应的操作。不同的Linux发行版可能具有不同的运行级别配置。建议在使用init
命令之前备份重要的数据并谨慎操作。
service-管理系统服务
在Linux中,service
命令用于管理系统服务,包括启动、停止、重启、查看状态等操作。它是一种通用的系统服务管理工具,适用于大多数Linux发行版。下面是service
命令的一些常用用法和代表性示例:
-
启动一个服务:
service serviceName start
这个命令将启动指定的服务,其中
serviceName
是服务的名称。 -
停止一个服务:
service serviceName stop
这个命令将停止指定的服务,其中
serviceName
是服务的名称。 -
重启一个服务:
service serviceName restart
这个命令将重启指定的服务,其中
serviceName
是服务的名称。 -
查看服务的状态:
service serviceName status
这个命令将显示指定服务的当前状态,包括运行状态、PID(进程ID)等信息。
-
列出所有可用的服务:
service --status-all
这个命令将列出系统中所有可用的服务,并显示它们的状态。
-
启用服务的自动启动:
service serviceName enable
这个命令将配置指定的服务在系统启动时自动启动。
-
禁用服务的自动启动:
service serviceName disable
这个命令将配置指定的服务在系统启动时不自动启动。
注意:实际使用中,serviceName
应替换为实际的服务名称,不同的Linux发行版可能有不同的服务命名约定。在具体操作时,请根据您的系统和服务进行相应的调整。建议使用man service
命令查看特定发行版的文档以了解更详细的用法和选项。`
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)