Linux系统认知——常用命令(全)

发布时间:2025-12-10 11:38:13 浏览次数:3

文章目录

  • 一、帮助命令
    • 1.man(查看帮助手册)
    • 2.info(阅读 info 格式的文档)
    • 3.whatis(查询命令功能)
  • 二、文件及目录相关命令
    • 1.touch(创建新的空文件,改变已有文件的时间戳)
    • 2.mkdir(创建目录)
    • 3. rm(删除文件或目录)
    • 4.rmdir(删除空目录)
    • 5.rm(移动文件,重命名文件)
    • 6.cp(复制文件或目录)
    • 7.cd(切换目录)
    • 8.pwd(显示当前目录)
    • 9.ls(显示目录信息)
    • 10.tree(以树状图列出目录内容)
    • 11.stat(显示文件或文件系统详细信息)
    • 12.rename(批量改变文件名)
    • 13.basename(提取文件路径的文件名)
    • 14.dirname(提取文件名中的路径部分)
    • 15.chattr(改变文件属性)
    • 16.lsattr(查看文件的第二扩展文件系统属性)
    • 17.file(识别文件类型)
    • 18.md5sum(生成和校验文件md5值)
    • 19.find(搜索指定文件)
    • 20.which(查找命令文件所在位置)
    • 21.whereis(查找命令的相关信息)
    • 22.locate(快速查找文件或目录)
    • 23.chown(改变文件或目录的用户和用户组)
    • 24.chmod(改变文件或目录权限)
    • 25.chgrp(更改文件用户组)
  • 三、文本处理相关命令
    • 1.grep(文本搜索)
    • 2.egrep(查找指定字符串)
    • 3.cat(显示文件内容)
    • 4.more(分页显示文本文件内容)
    • 5.less(分页显示文本内容)
    • 6.head(显示文件开头的内容)
    • 7.tail(查看文件尾部内容)
    • 8.tac(反向显示文件内容)
    • 9.nl(添加行号)
    • 10.wc(统计文本信息)
    • 11.split(文件切割)
    • 12.cut(提取文本的一部分)
    • 13.paste(合并两个或多个文件)
    • 14.sort(对文本内容进行排序)
    • 15.uniq(去除文件中的重复行)
    • 16.diff(比较文件的差异)、patch(根据差异打补丁)
    • 17.join(拼接两个文件)
    • 18.tr(转换或删除文件中的字符)
    • 19.awk(文本和数据进行处理的编程语言)
    • 20.sed(批量编辑文本文件)
  • 四、磁盘与文件系统相关命令
    • 1.du(查看磁盘使用空间)
    • 2.df(显示磁盘空间使用情况)
    • 3.sync(强制将更改的内容立刻写入磁盘)
    • 4.mount(把文件系统挂载到目录)
    • 5.umount(卸载文件系统)
    • 6.dd(拷贝及转换文件)
    • 7.tar(打包/解压工具)
    • 8.zip/unzip(压缩/解压文件)
    • 9.gzip/gunzip(压缩/解压文件,对文本压缩比率较高)
  • 五、系统管理与性能监控相关命令
    • 1.uname(显示系统信息)
    • 2.hostname(显示和设置系统的主机名)
    • 2.dmesg(显示开机信息)
    • 3.uptime(查看系统启动时间及负载信息)
    • 4.free(显示系统内存使用量情况)
    • 5.ulimit(控制shell程序的资源)
    • 6.init(切换系统运行级别)
    • 7.service(控制系统服务)
    • 7.vmstat(显示虚拟内存状态)
    • 8.iostat(监视系统输入输出设备和CPU)
    • 9.ipcs(显示进程间通讯设备信息)
    • 10.sar(系统运行状态统计)
    • 11.ipcrm(删除一个或更多的消息队列、信号量集或者共享 内存标识)
  • 六、网络工具相关命令
    • 1.route(显示并设置路由)
    • 2.ping(测试主机间网络连通性)
    • 3.traceroute(追踪数据包在网络上的传输时的全部路径)
    • 4.ifconfig(显示或设置网络设备)
    • 5.ifup/ifdown(激活/禁用网络接口)
    • 6.netstat(显示网络状态)
    • 7.ss(显示活动套接字)
    • 8.telnet(远程进入服务器)
    • 9.ssh(远程连接工具)
    • 10.ftp(文件传输协议客户端)
    • 11.sftp(交互式的文件传输程序)
    • 12.lftp(文件客户端程序)
    • 13.wget(文件下载)
    • 14.scp(远程拷备文件)
    • 15.curl(文本传输工具)
    • 16.host(域名查询)
    • 17.tcpdump(监听网络流量)
    • 18.nc(设置路由器)
  • 七、用户管理相关命令
    • 1.useradd(创建并设置用户信息)
    • 2.adduser(创建用户账户)
    • 3.passwd(修改用户的密码)
    • 4.userdel(删除用户账户)
    • 5.su(切换用户身份)
    • 6.sudo(以系统管理员的身份执行指令)
    • 7.id(显示用户ID和组ID)
    • 8.usermod(修改用户账号信息)
    • 9.groups(显示一个用户所加入的所有用户组)
    • 10.groupadd(创建新的用户组)
    • 11.groupdel(删除用户组)
    • 12.whoami(打印当前登录用户)
    • 13.who(查看当前登录用户信息)
    • 14.w(显示已登录用户)
    • 15.last(显示用户或终端的登录情况)
    • 16.users(显示当前登录的用户)
  • 八、进程管理相关命令
    • 1.top(实时显示进程动态)
    • 2.ps(显示进程状态)
    • 3.pstree(以树状图显示进程)
    • 4.pgrep(检索当前正在运行的进程)
    • 5.pmap(显示进程的内存映像)
    • 6.lsof(查看进程打开的文件)
    • 7.jobs/bg/fg(终端任务调度)
    • 8.kill(发送信号到进程)
    • 9.killall(使用进程名称来杀死进程)
    • 10.nice/renice(调整进程的优先级)
    • 11.nohup(后台运行程序)
  • 九、包管理器
    • 1.apt(包管理工具)
    • 2.apt-get(包管理工具)
  • 十、环境变量相关
    • 1.export(设置环境变量)
    • 2.source(在当前Shell环境中从指定文件读取和执行命令)
    • 3.set/unset(设置/删除shell变量)
  • 十一、终端操作
    • 1.echo(在终端输出字符串)
    • 2.printf(格式化并输出结果)
    • 3.clear(清除屏幕)
    • 4.history(显示与管理历史命令记录)
    • 5.login/logout(登入/登出系统)
    • 6.exit(退出终端/ssh连接)
  • 十二、命令相关
    • 1.xargs(过滤器)
    • 2.exec(调用并执行指定的命令)
    • 3.alias/unalias(设置/取消命令别名)
    • 4.type(显示指定命令的类型)
  • 十三、时间相关
    • 1.date(显示或设定系统日期和时间)
    • 2.cal(显示日历)
    • 3.crontab(定时执行任务)
    • 4.at/atq/atrm(时间执行一个任务)
    • 5.time(显示命令执行时所消耗的时间)
    • 6.watch(周期性执行命令)
  • 十四、小工具
    • 1.bc(数字计算器)
    • 2.ln(为文件创建快捷方式)
    • 3.shutdown/halt/poweroff/reboot(关闭/重启服务器)

一、帮助命令

1.man(查看帮助手册)

可通过键入

man man

查看man命令介绍
(1)作用:查看帮助手册
(2)语法:man+(选项)+参数
(3)章节:

1.用户命令手册
2.系统调用手册
3.库调用手册
4.设备文件手册
5.配置文件或者某些文件的格式
6.游戏
7.惯例和协议等杂项
8.系统管理工具
9.内核例程

(4)常用选项:

-f:显示给定关键字的简短描述信息-k:根据关键字搜索帮助手册-w:显示手册文件所在位置

(5)示例:

  • 查看cp命令的帮助手册
man cp
  • 查看sleep命令的简要信息
man -f sleep
  • 查看第3个章节的sleep信息
man 3 sleep
  • 查看passwd文件的详细介绍
man 5 passwd
  • 查看ls命令帮助手册文件所在位置
man -w ls
  • 搜索与disk相关的帮助手册
man -k disk

2.info(阅读 info 格式的文档)

(1)作用:info命令是Linux下info格式的帮助指令。阅读 info 格式的文档。
(2)语法:info [选项] 参数
(3)常用选项:

-w:显示info文档的物理位置-f:指定要访问的info文件-n:在首个浏览过info文件中指定节点

(4)常用操作

N键:显示(相对于本节点的)下一节点的文档内容。P键:显示(相对于本节点的)上一节点的文档内容。I键:返回上一个访问节点的页面内容B/E:一个节点内容的开始/结束。H:打开info教程。D:回到info初始节点。回车:跳转到连接文本。SPACE键:向前滚动一页。BACKUP或DEL键:向后滚动一页。Q:退出info。

(5)示例:

  • 查看pwd命令的帮助文档
info pwd
  • 显示pwd命令info文档的物理位置
info -w pwd

3.whatis(查询命令功能)

(1)作用:查询一个命令执行什么功能,并将查询结果打印到终端上(等同于man -f)
(2)语法:whatis 命令
(3)示例:

  • 查询sleep命令功能 :
whatis sleep

二、文件及目录相关命令

1.touch(创建新的空文件,改变已有文件的时间戳)

(1)作用:

  • 改变已有文件的时间戳属性(注:在修改文件的时间属性的时候,用户必须是文件的属主,或拥有写文件的访问权限
  • 创建新的空文件

(2)语法:touch [选项] FILE
(3)选项:

- a改变档案的读取时间记录。-c假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。-d设定时间与日期,可以使用各种不同的格式。-f不使用,是为了与其他 unix 系统的相容性而保留。-h影响每个符号链接,而不是任何引用的文件(仅在可以更改符号链接时间戳的系统上有用)-m改变档案的修改时间记录。-r使用参考档的时间记录,与 ![在这里插入图片描述](https://www.gzzwz.com.cn/uploads/202512/10/914df4d49e457ee3.webp)

–file 的效果一样。
-t 设定档案的时间记录,格式与 date 指令相同。
–help 列出指令格式。
–version 列出版本讯息

(4)示例:

  • 创建一个新文件 (并通过stat 命令查看创建文件的信息)
touch file.txt
  • 修改已有文件的时间戳为当前系统时间(包括修改时间及访问时间)

    与之前创建完相比较,时间更新

  • 修改文件的access时间

touch -a file.txt
  • 修改文件的Modify时间:
touch -m file.txt
  • 强制避免创建新文件
touch -c nofile.txttouch --no-creat nofile.txt

(3)选项

-i:若存在同名文件,则向用户询问是否覆盖-f:覆盖已有文件时,不进行任何提示-b:当文件存在时,覆盖前为其创建一个备份-u:当源文件比目标文件新,或者目标文件不存在时,才执行移动操作

(4)示例

  • 将文件file.txt移动到目录dir中
mv file.txt ./dir
  • 将file.txt 重名为 newfile.txt
mv file.txt newfile.txt
  • 将目录dir1移动到目录dir2中(前提是目录dir2已经存在,若不存在则改名)
mv dir1 dir2
  • 将文件file1.txt改名为file2.txt,如果file2.txt已经存在,则询问是否覆盖
mv -i file1.txt file2.txt
  • 文件覆盖前做备份
mv -b file1.txt file2.txt old-name:原字符串,原文件需要替换的字符串new-name:目标字符串,将要替换的目标字符串files:指定要改变文件名的文件列表

(3)选项

-n:模拟运行,实际没有进行重命名-v:输出每步执行信息-f:强制改写

(4)通配符

?:可替代单个字符*:可替代多个字符

(5)示例

  • 将myfile.txt改为 myfile.doc:
rename 's/.txt/.doc/' myfile.txt
  • 模拟将file1.txt 到file5.txt 改为file01.txt,file05.txt
rename -n 's/file/file0/' file*
  • 实际将file1.txt 到file5.txt 改为file01.txt到file05.txt,并输出执行结果
rename -v 's/file/file0/' file*

13.basename(提取文件路径的文件名)

(1)作用:提取文件路径中的文件名

(2)语法:
basename NAME [SUFFIX]
basename OPTION… NAME…

(3)选项:

-a:支持处理多个文件-s:删除指定货后缀

(4)示例

  • 提取文件名
basename /etc/passwd
  • 提取目录名(删除最后/)
basename /usr/local
  • 提取多个输入
basename -a /etc/passwd /usr/local
  • 删除指定后缀
basename -s .conf /etc/sysctl.confbasename /etc/sysctl.conf .conf

14.dirname(提取文件名中的路径部分)

(1)作用:去除文件名中的非路径部分,及提取文件名中的路径部分
(2)语法:dirname [OPTION] NAME…
(3)示例:

  • 提取文件路径
dirname /usr/bin/cat
  • 提取目录路径
dirname /home/zh1/commands/

15.chattr(改变文件属性)

(1)作用:来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性。
(2)语法: chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files…
(3)选项:

-R:递归处理,将指令目录下的所有文件及子目录一并处理;-v<版本编号>:设置文件或目录版本;-V:显示指令执行过程;+<属性>:开启文件或目录的该项属性;-<属性>:关闭文件或目录的该项属性;=<属性>:指定文件或目录的该项属性。

(4)属性:

A:即Atime,告诉系统不要修改对这个文件的最后访问时间S:即Sync,一旦应用程序对这个文件执行了写操作,系统立刻把修改的结果写到磁盘a:即Append Only,若是文件有此属性:只允许在这个文件之后追加数据,不允许覆盖或截断这个文件,若是目录有此属性,只允许在这个目录下建立和修改文件,而不允许删除任何文件b:不更新文件或目录的最后存取时间;c:将文件或目录压缩后存放;d:将文件或目录排除在倾倒操作之外;当dump程序执行时,该文件或目录不会被dump备份i:不得任意更动文件或目录;不允许对文件进行任何操作,对于目录,只能修改目录下的文件,不允许建立和删除文件s:彻底删除文件,不可恢复S:即时更新文件或目录;u:预防意外删除。当一个应用程序请求删除这个文件,系统会保留其数据以便以后能够恢复删除。t:文件系统支持尾部合并X:可以直接访问压缩文件的内容

(5)示例:

  • 防止某个关键文件被修改:
sudo chattr +i file.txt
  • 解除某个文件禁止被修改状态
sudo chattr -i file.txt
  • 只允许对文件追加内容
sudo chattr +a file.txt -pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command { };,注意{ }和\;之间的空格。-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

(3)选项:

① 查找名称查找文件的基本查找命令

-name filename :查找名为filename的文件。-iname filename :与-name相同,查找名为filename的文件,但忽略大小写。-type:按照文件类型查找,可以是以下类型:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。s -socket文件

② 根据他们的权限查找文件

-perm :按执行权限来查找(mode为完全匹配, -mode为包含即可)-empty :查找长度为零(即空文件)的文件

③ 基于所有者和组的搜索文件

-user username :文件属主来查找-group groupname :按组来查找-nogroup :查无有效属组的文件,即文件的属组在/etc/groups中不存在-nouser :查无有效属主的文件,即文件的属主在/etc/passwd中不存(孤儿文件 没有所有者的文件)

④ 根据日期和时间查找文件和目录

-mtime -n +n :按文件更改时间来查找文件,-n指n天以内,+n指n天以前-atime -n +n :按文件访问时间来查,-n指n天以内,+n指n天以前-ctime -n +n :按文件创建时间来查找文件,-n指n天以内,+n指n天以前

⑤ 根据大小查找文件

-size [+/-]n按照文件大小查询文件,+n表示文件大小大于n,-n表示文件大小小于n。常用单位:k, M, G

(4)示例:

  • 全盘搜索系统中所有以.conf结尾的文件
find / -name *.conf
  • 在/etc目录中搜索所有大于1k大小的文件
sudo find /etc -size +1k
  • 在/home目录中搜索所有属于指定用户的文件
sudo find /home -user zh1
  • 搜索指定目录下所有的文件
find ../ -type f
  • 搜索指定目录下所有权限为664的文件,并列出来
find ../ -perm 664 -exec ls -l {} \;
  • 在指定目录下搜索所有指定后缀的文件,后缀不需要大小写
find ../ -iname "*.txt"
  • 搜索指定工作目录中所有七天内被修改过的文件
find -mtime -7

20.which(查找命令文件所在位置)

(1)作用:查找命令文件所在位置
(2)语法:which [-a] filename …
(3)示例:
查找命令所在位置

which lswhich bashwhich fdisk

21.whereis(查找命令的相关信息)

(1)作用:查找命令的二进制程序,源代码文件和man手册页
(2)语法: whereis [options] [-BMS directory… -f] name…
(3)选项:

-b:查找二进制程序或命令-B:从指定目录下查找二进制程序或命令-m:查找man手册文件-M:从指定目录下查找man手册文件-s:只查找源代码文件-S:从指定目录下查找源代码文件

(4)示例:

  • 查找ls命令的程序路径和man手册页位置
whereis ls
  • 查找ls命令的二进制程序路径
whereis -b ls
  • 查找ls命令的man手册页路径
whereis -m ls

22.locate(快速查找文件或目录)

(1)作用:快速查找文件或目录,同whereis命令一样,在数据库中查找,而非在磁盘上找,这个数据库每天会更新一次,故有可能无法找到最近添加或删除的文件,故查找前,需要更新数据库:sudo updatedb
(2)语法:locate [选项][文件]
(3)选项:

-i:忽略大小写-c:输出匹配条目的数量-p:忽略空格

(4)示例:

  • 查找系统中所有file.txt文件
locate file.txt
  • 搜索路径中包含/etc/sh的文件
locate /etc/shs
  • 查找与whereis 相关的所有文件
locate whereis
  • 查找指定目录下的以f开头的文件,不区分大小写
locate -i /home/zh1/commands/locate/f

23.chown(改变文件或目录的用户和用户组)

(1)作用:改变文件或目录的用户和用户组
(2)语法:chown [选项] 所属主:所属组 文件
(3)选项:

-R:对目前目录下的所有文件与目录进行相同的变更-c:显示所属信息变更信息

(4)示例:
首先创建用户和组:
(创建组和用户分别为:sudo groupadd zh2,sudo useradd -m -g zh2 zh2)
创建zh2用户,该用户组为zh2,并在/home目录下创建zh2目录

  • 改变指定文件的所属主与所属组
sudo chown zh2:zh2 file.txt
  • 只改变指定文件的所属主
sudo chown zh2 file.txt
  • 只改变指定文件的所属组
sudo chown :zh2 file.txt
  • 改变指定文件的所属用户和所属组,并显示过程
sudo chown -c zh2:zh2 file.txt
  • 改变指定目录及其内所以子文件的所属用户和所属组
sudo chown -R zh2:zh2 dir

24.chmod(改变文件或目录权限)

(1)作用:改变文件或目录权限
(2)语法:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…

(3)修改权限的两种模式:

① 符号模式:

  • 格式:[ugoa][[±=][rwx]]
  • 对象:
  • 操作:
  • 权限:

② 数字模式

(4)选项:

-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

(5)示例:

  • 将文件 file.txt 设置为所有人都可读取
chmod a+r file.txt
  • 将当前目录下所有文件及递归目录文件设置为所有人可读取
chmod -R a+r *
  • 将 file.txt 设置为只有该文件拥有者才可以执行
chmod u+x file.txt
  • 将 file.txt 设置为文件拥有者及其同组人员可写入,但其他人不可写入
chmod ug+w,o-w file.txt
  • 将 file.txt 设置为所有人都可读可写可执行
chmod a+r,a+w,a+x file.txtchmod 777 file.txt
  • 将 file.txt 设置为文件拥有者可读可写可执行,此外的其他人可读可执行
chmod 755 file.txtchmod u+r,u+w,u+x,go = rx
  • 将 file.txt 设置为文件拥有者可读可写,此外其他人都没任何权限
chmod u=rw,go= file.txt

25.chgrp(更改文件用户组)

(1)作用:更改文件用户组
(2)语法:chgrp [参数][目录]
(3)选项:

-v:显示指令执行过程-R:递归处理,将指定目录下的所有文件及子目录一并处理--reference:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同

(4)示例:

  • 改变文件的用户组
sudo chgrp zh2 file.txt
  • 改变文件的用户组,并显示命令执行过程
sudo chgrp -v zh1 file.txt
  • 根据参照文件改变文件的用户组
sudo chgrp --reference=reffile.txt file.txt
  • 将dir及其子目录下的所有文件的用户组改为zh2
sudo chgrp -R zh2 dir

三、文本处理相关命令

1.grep(文本搜索)

(1)作用:文本搜索工具
(2)语法:grep [选项] 文件
(3)选项:

-i:忽略大小写-c :只输出匹配行的数量-l 只列出符合匹配的文件名,不列出具体的匹配行-n 列出所有的匹配行,显示行号-h 查询多文件时不显示文件名-s 不显示不存在、没有匹配文本的错误信息-v 显示不包含匹配文本的所有行-w 匹配整词-x 匹配整行-r 递归搜索-q 禁止输出任何结果,已退出状态表示搜索是否成功-b 打印匹配行距文件头部的偏移量,以字节为单位o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位-F 匹配固定字符串的内容-E 支持扩展的正则表达式

(4)示例:

  • 搜索某个文件中,包含某个关键词的内容
grep zh1 /etc/passwd
  • 搜索多个文件中,包含某个关键词的内容
sudo grep zh1 /etc/passwd /etc/shadow
  • 搜索多个文件中,包含某个关键词的内容,不显示文件名称
sudo grep -h zh1 /etc/passwd /etc/shadow
  • 递归搜索,不仅搜索指定目录,还搜索其内子目、录内是否有关键词文件
grep -r hellp *
  • 输出在某个文件中,包含某个关键词行的数量
sudo grep -c zh1 /etc/passwd /etc/shadow
  • 忽略大小写
grep -i ZH1 /etc/passwd
  • 在文件中查找要搜索的内容,并显示行号
grep -n zh1 /etc/passwd
  • 反向查找(不包含指定内容的其他内容)
grep -v zh1 /etc/passwd
  • 只列出符合匹配的文件名,不列出具体的匹配行
grep -l hello *
  • 搜索某个文件中,精准匹配到某个关键词的内容
grep -x hello file.txtgrep -x hello file1.txt
  • 判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用
grep -q hello file1.txtecho $?grep -q hello file2.txtecho $?

2.egrep(查找指定字符串)

(1)作用:查找指定的字符串
(2)语法:egrep [选项] [文件]
(3)选项:同grep
(4)示例:

file.txt内容:

linux hello55 66 77 888li nuxlinuxlinuxlinuxlinuxlinux#worldababababababcabdabe
  • 查找包含一个或一个以上"a"的内容
egrep 'a+' file.txt
  • 查找包含linux或66的内容
egrep 'linux|66' file.txt
  • 查找包含linux整体的内容
egrep '(linux)' file.txt
  • 查找包含一个或多个linux整体的内容
egrep '(linux)+' file.txt
  • 查找以#开头的内容
egrep '^#' file.txt
  • 查找以linux结尾的内容
egrep 'linux$' file.txt
  • 查找连续出现3次ab的内容
egrep '(ab){3}' file.txtegrep '(linux){3}' file.txt

(4)参数:

if=文件名 输入文件名,默认为标准输入。即指定源文件。of=文件名 输出文件名,默认为标准输出。即指定目的文件。ibs=bytes 一次读入 bytes 个字节,即指定一个块大小为 bytes 个字节。obs=bytes 一次输出 bytes 个字节,即指定一个块大小为 bytes 个字节。bs=bytes 同时设置读入/输出的块大小为 bytes个字节。cbs=bytes 一次转换 bytes 个字节,即指定转换缓冲区大小。skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制。seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制。count=blocks 仅拷贝 blocks 个块,块大小等于 ibs/obs 指定的字节数。conv=<关键字> 指定关键字:关键字:conversion 用指定的参数转换文件。ascii 转换 ebcdic 为 ascii。ebcdic 转换 ascii 为 ebcdic。ibm 转换 ascii 为 alternate ebcdic。block 把每一行转换为长度为 cbs,不足部分用空格填充。unblock 使每一行的长度都为 cbs,不足部分用空格填充。lcase 把大写字符转换为小写字符。ucase 把小写字符转换为大写字符。swab 交换输入的每对字节。noerror 出错时不停止。notrunc 不截断输出文件。sync 将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。。conversion 用指定的参数转换文件。

(5)示例:

  • 生成一个指定大小(500M)的新文件
dd if=/dev/zero of=./file1.txt bs=500k count=1
  • 拷贝指定文件的前5个字节
dd if=file2.txt of=dfile2.txt bs=5 count=1
  • 拷贝指定文件的内容,并将所有字符转换成大写后输出到新文件中
dd if=file3.txt of=dfile3.txt conv=ucase
  • 由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备
dd conv=ucase #(按ctrl+d结束)

7.tar(打包/解压工具)

(1)作用:打包/解压工具
(2)语法:tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG…]
(3)参数:

-c 新建打包文件-x 解压文件,配合 -C 解压到对应的文件目录-f (压缩或解压时)指定要处理的文件-j 通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz-z 通过gzip方式压缩或解压,最后以.tar.gz 为后缀-v 显示操作过程-t 查看打包文件中内容-C dir 指定压缩/解压缩的目录,若无指定,默认是当前目录

(4)示例:

  • 将当前目录下所有 .txt 文件打包(未压缩),并显示操作过程
tar -cvf files.tar file*
  • 打包文件之后,使用 gzip 方式压缩
tar -cvzf files.tar.gz file*
  • 打包文件后,使用bzip2方式压缩
tar -cvjf files.tar.br2 file*
  • 解压文件到当前目录
tar -zxvf files.tar.gz
  • 解压文件到指定目录下
tar -zxvf files.tar.gz -C dir/
  • 列出压缩包里的内容
tar -tf files.tar.gz

8.zip/unzip(压缩/解压文件)

①zip:

(1)作用:压缩文件
(2)语法:zip 参数 文件
(3)参数:

-r 递归处理,将指定目录下的所有文件和子目录一并处理-v 显示指令执行过程-d 更新压缩包内文件

(4)示例:

  • 将指定目录及其内全部文件都打包成zip格式压缩包文件
zip -r dir.zip dir
  • 将当前目录下所有txt文件全部压缩成files.zip
zip files.zip *.txt
  • 将newfile.txt添加到files.zip压缩包
zip -dv files.zip newfile.txt

②unzip:

(1)作用:压缩文件
(2)语法:unzip 参数 文件
(3)参数:

-l 显示压缩文件内所包含的文件-v 显示指令执行过程-d<目录> 指定文件解压缩后所要存储的目录

(4)示例:

  • 查看压缩文件中包含的文件
unzip -l files.zip
  • 查看显示的文件列表还包含压缩比率
unzip -v files.zip
  • 检查zip文件是否损坏
unzip -t files.zip
  • 解压files.zip到指定目录
unzip files.zip -d udir/

9.gzip/gunzip(压缩/解压文件,对文本压缩比率较高)

(1)作用:压缩/解压文件
(2)语法:
gzip [参数] 文件
gunzip [参数] 压缩包
(3)参数:

-d 解开压缩文件-k 保留原文件-l 列出压缩文件的相关信息-r 递归处理,将指定目录下的所有文件及子目录一并处理-v 显示指令执行过程-t 测试压缩文件是否正确无误

(4)示例:

  • 压缩指定的文件,原文件将被删除
gzip file.txt
  • 压缩指定的目录
gzip -r dir/
  • 显示指定压缩包的压缩信息
gzip -l file.txt.gz
  • 解压指定的压缩包文件
gzip -dv file.txt.gzgunzip -v file.txt.gz

(3)参数:

add<地址> 设置网络设备IPv6的IP地址del<地址> 删除网络设备IPv6的IP地址down 关闭指定的网络设备up 启动指定的网络设备IP地址 指定网络设备的IP地址

(4)示例:

  • 显示网络设备信息
ifconfig
  • 关闭/打开指定网卡
sudo ifconfig ens33 downsudo ifconfig ens33 up

使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,
使用-c参数指定要监听的数据包数量,
使用-w参数指定将监听到的数据包写入文件中保存
tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
补充说明:执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员root
不带参数的tcpdump会收集网络中所有的信息包头,数据量巨大,必须过滤。
(3)参数:

-A 以ASCII格式打印出所有分组,并将链路层的头最小化。-c 在收到指定的数量的分组后,tcpdump就会停止。-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。-d 将匹配信息包的代码以人们能够理解的汇编格式给出。-dd 将匹配信息包的代码以c语言程序段的格式给出。-ddd 将匹配信息包的代码以十进制的形式给出。-D 打印出系统中所有可以用tcpdump截包的网络接口。-e 在输出行打印出数据链路层的头部信息。-E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。-f 将外部的Internet地址以数字的形式打印出来。-F 从指定的文件中读取表达式,忽略命令行中给出的表达式。-i 指定监听的网络接口。-l 使标准输出变为缓冲行形式,可以把数据导出到文件。-L 列出网络接口的已知数据链路。-m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。-M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。-n 不把网络地址转换成名字。-nn 不进行端口名称的转换。-N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。-t 在输出的每一行不打印时间戳。-O 不运行分组分组匹配(packet-matching)代码优化程序。-P 不将网络接口设置成混杂模式。-q 快速输出。只输出较少的协议信息。-r 从指定的文件中读取包(这些包一般通过-w选项产生)。-S 将tcp的序列号以绝对值形式输出,而不是相对值。-s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。-t 不在每一行中输出时间戳。-tt 在每一行中输出非格式化的时间戳。-ttt 输出本行和前面一行之间的时间差。-tttt 在每一行中输出由date处理的默认格式的时间戳。-u 输出未解码的NFS句柄。-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。-vv 输出详细的报文信息。-w 直接将分组写入文件中,而不是不分析并打印出来。

(4)示例:

  • 监视第一个网络接口上所有流过的数据包
tcpdump
  • 监视指定网络接口的数据包
tcpdump -i ens33
  • 显示指定数量包
tcpdump -c 20
  • 精简模式显示 10个包
tcpdump -c 10 -q
  • 监视指定主机的数据包(主机名)
sudo tcpdump host www.baidu.com
  • 监听指定主机的数据包(IP地址)
tcpdump host 192.168.107.133
  • 监听指定端口号的数据包,并以文本形式展示
tcpdump -i any port 22 -A

18.nc(设置路由器)

(1)作用:设置路由器
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间传输文件
- 机器之间网络测速
(2)语法:
nc [-46bCDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s source] [-T keyword]
[-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [-Z peercertfile] [destination] [port]

(3)参数:

-v 显示指令执行过程。-w<超时秒数> 设置等待连线的时间。-z 使用0输入/输出模式,只在扫描通信端口时使用。-n 直接使用IP地址,而不通过域名服务器。-u 使用UDP传输协议。-l 使用监听模式,管控传入的资料。

(4)示例:

  • 扫描指定IP的TCP端口,范围1-100
nc -v -z -w2 192.168.109.142 1-100
  • 扫描指定IP的UDP端口,范围1-100
nc -v -u -z -w2 192.168.109.142 1-100
  • 扫描指定端口
nc -nvv 192.168.109.142 22
  • 监听某个端口、连接某个端口(实现中断间的通信聊天)
nc -l 1234nc 192.168.109.142 1234

七、用户管理相关命令

1.useradd(创建并设置用户信息)

(1)作用:创建并设置用户信息
(2)语法:useradd [参数] 用户名
(3)参数:

-d<登入目录> 指定用户登入时的目录。-g<群组> 初始群组。-G<群组> 非初始群组。-m 自动创建用户的家目录。-M 不要创建用户的家目录。-N 不要创建以用户名称为名的群组。-s 指定用户登入后所使用的shell。-c 添加注释

(4)四个重要文件

/etc/passwd :记录用户信息/etc/shadow:保存每个用户的密码/etc/group:保存组的信息/etc/gshadow:保存组的密码

(5)示例

  • 直接创建新用户
sudo useradd user1
  • 常用创建方法(指定shell和在home目录下创建用户目录)
cat /etc/passwd | grep user
  • 指定家目录(不常用)
useradd -m -d /new/dir username
  • 指定用户ID
useradd -u 1500 username
  • 指定组ID
useradd -g group username
  • 分配多个组
useradd -g group -G group1,group2 username
  • 自定义注释
sudo useradd -c "Test user" user3

2.adduser(创建用户账户)

(1)作用:创建用户账户,与useradd一致,创建过程有提醒
(2)语法:adduser [参数] 用户名
(3)示例:

  • 创建一个新用户
sudo adduser newuser1

3.passwd(修改用户的密码)

(1)作用:修改用户的密码
(2)语法: passwd [参数] 用户名
(3)参数:

-d 删除已有密码-l 锁定用户的密码值,不允许修改-u 解锁用户的密码值,允许修改-e 下次登陆强制修改密码-k 用户在期满后能仍能使用-S 查询密码状态

(4)示例:

  • 修改当前登录用户的密码值
passwd
  • 修改指定用户的密码值 p
sudo passwd newuser1
  • 锁定指定用户的密码值,不允许其进行修改
passwd -l zh1
  • 解锁指定用户的密码值,允许其进行修改
passwd -u zh1
  • 强制指定的用户在下次登陆时必须重置其密码
passwd -e zh1
  • 删除指定用户的密码值
passwd -d zh1
  • 查看指定用户的密码状态
passwd -S zh1

4.userdel(删除用户账户)

(1)作用:删除用户账户
(2)语法:userdel [参数] 用户名
(3)参数:

r 删除用户主目录及其中的任何文件

(4)示例:

  • 删除指定的用户账户信息
userdel zh2


  • 删除指定的用户账户信息及家目录
userdel -r newuser3

5.su(切换用户身份)

(1)作用:切换用户身份
(2)语法 :su [参数] 用户名
(3)参数:

- 完全身份变更-c 执行完指定的指令后,即恢复原来的身份-f 适用于csh与tsch,使shell不用去读取启动文件-l 改变身份时,也同时变更工作目录-m 变更身份时,不要变更环境变量-s 指定要执行的shell

(4)示例:

  • 变更帐号为zh2并在执行whomai指令后退出变回原使用者
su -c whoami zh2
  • 变更帐号为zh2并保留在当前工作目录
su zh2
  • 变更帐号为alvin并改变工作目录至alvin的家目录
su -zh2

6.sudo(以系统管理员的身份执行指令)

(1)作用:以系统管理员的身份执行指令
(2)语法:sudo [参数]
(3)参数:

-l 显示当前用户的权限-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份

(4)配置文件

/etc/sudoers 授权用户/组 主机=[(切换到哪些用户或组)] 命令

  • 查看配置文件
sudo visudosudo vim /etc/sudoers

(5)示例:

  • 列出当前用户的权限
sudo -l
  • 指定用户身份执行命令
sudo -u zh2 whoami
  • 以 root 权限执行上一条命令
sudo !!

7.id(显示用户ID和组ID)

(1)作用:显示用户ID和组ID
(2)语法:id [参数] [用户名]
(3)参数:

-g 显示用户所属群组的ID-G 显示用户所属附加群组的ID-n 显示用户,所属群组或附加群组的名称-r 显示实际ID-u 显示用户ID

(4)示例:

  • 显示当前用户的所有信息
id
  • 显示指定用户信息
id zh2
  • 显示用户所属群组的ID
id -g zh1
  • 显示用户所属附加群组的ID
id -G zh1

8.usermod(修改用户账号信息)

(1)作用:修改用户账号信息
(2)语法:usermod [参数] 用户名
(3)参数:

-c<备注> 修改用户账号的备注文字-d<登入目录> 修改用户登入时的家目录-e<有效期限> 修改账号的有效期限-f<缓冲天数> 修改在密码过期后多少天即关闭该账号-g<群组> 修改用户所属的群组-G<群组> 修改用户所属的附加群组-l<账号名称> 修改用户账号名称-L 锁定用户密码,使密码无效-s<shell> 修改用户登入后所使用的shell-u<uid> 修改用户ID-U 解除密码锁定

(4)示例:

  • 修改指定用户的家目录路径
sudo usermod -d /home/hometest user1
  • 修改指定用户的UID号码
usermod -u 1234 user1
  • 修改指定用户的名称
usermod -l user2 zh2
  • 锁定指定用户的账户
usermod -L user2
  • 解锁指定用户的账户
sudo usermod -U user2

9.groups(显示一个用户所加入的所有用户组)

(1)作用:显示一个用户所加入的所有用户组
(2)语法:groups 用户
(3)示例:

  • 显示zh1用户所加入的所有组
groups user1groups suer2

10.groupadd(创建新的用户组)

(1)作用:创建新的用户组
(2)语法:groupadd [参数] 用户组
(3)参数:

-g 指定新建工作组的id-r 创建系统工作组

(4)示例:

  • 创建一个新的用户组
groupadd work
  • 创建一个新的用户组,并指定GID号码
groupadd -g 1234 family
  • 创建一个新的用户组,设定为系统工作组
groupadd -r grouptest

11.groupdel(删除用户组)

(1)作用:删除用户组
(2)语法:groupdel [参数] [群组名称]
(3)示例:

  • 删除指定用户组
groupdel family

12.whoami(打印当前登录用户)

(1)作用:打印当前登录用户
(2)语法:whoami
(3)示例:

  • 查询当前登录的用户名
whoami

13.who(查看当前登录用户信息)

(1)作用:查看当前登录用户信息
(2)语法:who [参数]
(3)参数:

-a 全面信息-b 系统最近启动时间-l 系统登录进程-H 带有列标题打印用户名,终端和时间-t 系统上次锁定时间-u 已登录用户列表-q 列出所有已登录的用户的名称和数量

(4)示例:

  • 查看当前登录用户信息
who
  • 查看当前登录用户信息,并加上标题栏
who -H
  • 查看当前全部的登录全部用户信息
who -H -a
  • 查看系统的最近启动时间
who -b
  • 显示终端属性
who -T -H
  • 精简模式显示
who -q

14.w(显示已登录用户)

(1)作用:显示已登录用户
(2)语法: w [参数]
(3)参数

h 不打印头信息-u 当显示当前进程和cpu时间时忽略用户名-s 使用短输出格式-f 显示用户从哪登录-o 老式输出-i 显示IP地址而不是主机名(如果可能)

(4)示例:

  • 显示目前登入系统的用户信息
w
  • 不打印头信息
w -h
  • 显示用户从哪登录
w -f
  • 使用短的输出格式
w -s

15.last(显示用户或终端的登录情况)

(1)作用:显示用户或终端的登录情况
(2)语法:last [选项]
(3)选项:

-R 省略hostname的栏位-a 把从何处登入系统的主机名称或IP地址,显示在最后一行-n<显示行数>或-<显示行数> 显示名单的行数-i 显示ip地址而不是主机名

(4)示例:

  • 显示近期用户或终端的登录情况
last
  • 简略显示,并指定显示的个数
last -n 5 -Rlast -5 -R
  • 最后一列显示主机IP地址
last -n 5 -a -i

16.users(显示当前登录的用户)

(1)作用:显示当前登录的用户
(2)示例:

  • 显示当前登录用户

八、进程管理相关命令

1.top(实时显示进程动态)

(1)作用:实时显示进程动态
(2)语法:ps [options]
(3)选项:

-d 指定每两次屏幕信息刷新之间的时间间隔(单位为秒)-c 切换显示命令名称和完整命令行-p 通过指定监控进程ID来仅仅监控某个进程的状态-n 信息更新最大次数

(4)快捷键:

c 显示进程绝对路径P 根据CPU使用率排序M 根据物理内存使用率排序1 显示每个核的CPU状况

(5)示例:

-实时显示进程动态

top
  • 显示完整的进程信息
top -c
  • 指定信息刷新时间为 5 秒
top -d 5
  • 设置信息更新次数
top -n 2
  • 仅监控进程 22 的状态
top -p 22

2.ps(显示进程状态)

(1)作用:显示进程状态
(2)语法:ps [options]
(3)选项:

A 显示所有进程-a 显示所有终端机下执行的程序-x 通常与 a 这个参数一起使用,可列出较完整信息-e 列出程序时,显示每个程序所使用的环境变量-f 用ASCII字符显示树状结构,表达程序间的相互关系-u <用户识别码> 列出属于该用户的程序的状况,也可使用用户名称来指定

(4)信息说明:

USER,用户名称PID,进程号%CPU,该进程所占用CPU百分比%MEM,该进程所占用内存百分比VSZ,进程所占用的虚拟内存大小RSS,进程所占用的实际内存大小TTY,该进程运行在哪个终端上面,若与终端无关,则显示 STAT,进程状态:R running or runnable (on run queue) 运行S interruptible sleep 可中断睡眠D uninterruptible sleep 不可中断睡眠T stopped by job control signal 停止Z defunct (“zombie”) process 僵死START,进程启动时间TIME,进程实际占用CPU的时间COMMAND,该进程对应的执行程序

(5)示例:

  • 显示当前系统所有进程状态
ps -aux # 列出目前所有的正在内存当中的程序ps -A # 显示所有进程信息ps -ef # 显示所有进程信息,连同命令行



  • 树形显示所有进程
ps -axf
  • 查找特定进程信息
ps -aux | grep ssh
  • 显示指定用户信息
ps -u zh1
  • 配合 less 命令使用
ps -aux |less # 分页显示
  • 结合管道操作符与sort命令,依据处理器使用量(第三列)情况降序排序
ps -axux | sort -rnk 3

3.pstree(以树状图显示进程)

(1)作用:以树状图显示进程
(2)语法:pstree [参数]
(3)参数:

-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示-c 不使用精简标示法-G 使用VT100终端机的列绘图字符-h 列出树状图时,特别标明现在执行的程序

(4)示例:

  • 以树状图显示进程
pstree
  • 显示该进程的完整指令及参数,遇到相同的进程名可以压缩显示
pstree -a
  • 显示当前所有进程的进程号和进程id
pstree -p
  • 同时显示用户名称
pstree -u

4.pgrep(检索当前正在运行的进程)

(1)作用:检索当前正在运行的进程
(2)语法:pgrep [参数] [模式]
(3)参数:

-d 设置一个字符串,用于分隔输出的每个进程ID-f 模式参数仅用于匹配进程名-I 列出进程名及进程ID-u 选择仅匹配指定有效用户ID进程

(4)示例:

  • 查找ssh进程的pid
pgrep sshd
  • 指定分隔符输出
pgrep sshd -d" "
  • 显示进程名称和PID
pgrep -l sshd
  • 匹配所有的参数列表
pgrep -fla ssh
  • 使用正则表达式
pgrep '^sshd$' -l

5.pmap(显示进程的内存映像)

(1)作用:显示进程的内存映像
(2)语法:pmap [参数] [进程ID ]
(3)参数:

x 增加一个标题行,同时显示每个内存映像实际使用的物理内存大小,以及内存已修改但尚未写到磁盘的页面数量等附加进程信息-d 增加一个标题行,同时显示内存映射文件的偏移值,以及存储设备的主次设备号等附加进程信息-q 采用安静方式,禁止显示汇总信息行-V 显示命令的版本信息,然后退出

(4)示例:

  • 显示bash的地址空间,查询每个内存映像的概况
pmap 13777
  • 显示bash的地址空间,了解更多信息
pmap -x 13777

6.lsof(查看进程打开的文件)

(1)作用:查看进程打开的文件
(2)语法:lsof [参数] [文件]
(3)参数:

-a 列出打开文件存在的进程-c <进程名> 列出指定进程所打开的文件-g 列出GID号进程详情-d <文件号> 列出占用该文件号的进程+d <目录> 列出目录下被打开的文件+D <目录> 递归列出目录下被打开的文件-n <目录> 列出使用NFS的文件-i <条件> 列出符合条件的进程-p <进程号> 列出指定进程号所打开的文件-u 列出UID号进程详情

(4)示例:

  • 查看当前系统中全部文件与进程对应信息
lsof
  • 显示指定目录中被调用的文件信息
lsof +d /home
  • 递归显示指定目录中全部被调用的文件信息
lsof +D /home
  • 查看谁正在使用某个文件(查找某个文件相关的进程)
lsof /bin/bash
  • 列出某个用户打开的文件信息
lsof -u zh1
  • 列出某个程序进程所打开的文件信息
lsof -c bash
  • 通过某个进程号显示该进行打开的文件
lsof -p 1930
  • 根据文件描述列出对应的文件信息
lsof -d 1

7.jobs/bg/fg(终端任务调度)

(1)作用:终端任务调度
(2)示例:

  • 列出当前shell的任务
jobs -l
  • 将test2.sh调至前台运行
fg 2
  • 恢复test2.sh在后台运行
bg 2
  • 杀死test3.sh
kill 3kill pid

8.kill(发送信号到进程)

(1)作用:发送信号到进程
(2)语法:kill [options] […]
(3)选项:

-a:当处理当前进程时,不限制命名和进程号的对应关系;-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;-p:指定kill命令只打印相关进程的进程号,而不发送任何信号;-s <信息名称或编号>:指定要送出的信息;-u:指定用户。

(4)常用信号:

HUP 1 终端断线INT 2 中断(同ctrl+c)QUIT 3 退出(同ctrl+\)TERM 15 终止KILL 9 强制终止CONT 18 继续(与STOP相反,fg/bg命令)STOP 19 暂停(同ctrl+Z)

(5)示例:

  • 列出系统支持的所有信号列表
kill -l
  • 不指定信号
Kill pid
  • 得到指定信号的数值
kill -l SIGKILL
  • 杀死指定进程
kill -9 pid
  • 杀死指定用户所有进程
kill -9 $(ps -ef | grep zh1)

9.killall(使用进程名称来杀死进程)

(1)作用:使用进程名称来杀死进程
(2)语法:killall [参数] [进程名称]
(3)参数:

-l 打印所有已知信号列表-u 杀死指定用户的进程

(4)示例:

  • 杀死所有sleep进程
killall sleep
  • 查看killall支持的所有信号
killall -l
  • 发送指定信号
killall -9 sleep
  • 杀死指定用户所有进程
sudo killall -u zh1

10.nice/renice(调整进程的优先级)

(1)作用:调整进程的优先级
(2)语法:
nice [参数] [命令]
renice [参数] [命令]

(3)参数:

nice:

-n 后面接一个数值,范围在-20~19

renice:

-g 指定进程组id-p 改变该程序的优先权等级,此参数为预设值-u 指定开启进程的用户名

(4)示例:

  • 查看nice值
ps -l
  • 设置优先级为15
nice -n 15 vim &nice -15 vim &
  • 根据pid重新设置进程的nice值
renice 6 -p pid
  • 将zh1的进程nice值全部设置为-5
renice -5 -u zh1

11.nohup(后台运行程序)

(1)作用:后台运行程序
(2)示例:

  • 让进程在后台运行
nohup ./test &
  • 输出重定向到file.txt文件
nohup ./test > file.txt 2>&1 & # 2:标准错误 1:标准输出 表示,标准错误定向到标准输出,标准输出又定向到file.txt

九、包管理器

1.apt(包管理工具)

(1)作用:包管理工具
(2)语法:apt [选项] 软件包
(3)示例:

  • 列出所有可更新的软件清单
sudo apt update
  • 升级软件可更新的软件包
sudo apt upgrade
  • 单独升级某个安装包
sudo apt upgrade vim
  • 安装软件包
sudo apt install bat
  • 删除软件包
sudo apt remove bat
  • 打印软件包信息
sudo apt show bat
  • 清理不再使用的依赖和库文件
sudo apt autoremove
  • 列出已安装的所有软件包
sudo apt list --installed

2.apt-get(包管理工具)

(1)作用:包管理工具
(2)语法: 与apt非常类似
(3)apt与apt-get异同点:

  • apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合
  • apt视觉功能更好:


  • apt替换部分apt-get系列命令,但不是全部

十、环境变量相关

1.export(设置环境变量)

(1)作用:设置或显示环境变量
(2)语法:export [选项] 文件
(3)选项:

-f 代表[变量名称]中为函数名称-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中-p 列出所有的shell赋予程序的环境变量

(4)示例:

  • 列出当前所有的环境变量
export -p
  • 定义环境变量
export MYENV
  • 定义环境变量赋值
export MYENV = 7
  • 修改环境变量
PATH export PATH=$PATH:/usr/local/mysql/bin

(5)注意:

  • export 的作用效果仅限于本次登陆,换个终端就不存在添加的环境变量了

  • 如果想永久生效,可修改配置文件

    /etc/profile #所有用户

sudo vi /etc/profile


~/.bashrc #当前用户 sudo vi ~/.bashrc


2.source(在当前Shell环境中从指定文件读取和执行命令)

(1)作用:在当前Shell环境中从指定文件读取和执行命令,该命令通常用命令“.”来替代
(2)语法: source [文件]
(3)示例:

  • 读取和执行bashrc文件
source ~/.bashrc. ~/.bashrc
  • 执行刚修改的初始化文件,使之立即生效
source /etc/profile

3.set/unset(设置/删除shell变量)

(1)作用:设置/删除shell变量
(2)语法:
set [参数] [变量]
unset [参数] [变量]
(3)参数:

set :-a 标示已修改的变量,以供输出至环境变量unset:-f 仅删除函数-v 仅删除变量

(4)示例:

  • 显示所有的Shell变量
set
  • 设置环境变量

第1步:定义新的环境变量 declare myenv=‘666’
第2步:将定义的变量输出为环境变量 set -a myenv
第3步:查看是否设置成功 env | grep myenv

  • 删除环境变量
unset -v myenvunset myenv #优先删除变量

十一、终端操作

1.echo(在终端输出字符串)

(1)作用:在终端输出字符串
(2)语法: echo [OPTION]… [STRING]…
(3)参数:

-n 不输出结尾的换行符-e “\a” 发出警告音-e “\b” 删除前面的一个字符-e “\c” 结尾不加换行符(\c 后面的字符不会输出)-e “\f” 换行,光标扔停留在原来的坐标位置-e “\n” 换行,光标移至行首-e “\r” 光标移至行首,但不换行(会覆写行开头的字符)-E 禁止反斜杠转义,与-e参数功能相反

(4)示例:

  • 输出一段普通字符串
echo "hello world"echo hello world
  • 输出变量提取后的值
echo $PATH
  • 取消转义
echo \$PATH
  • 将输出结果重定向到文件
echo "hello world" > file.txt
  • 显示命令执行结果
echo `date`
  • 输出带有换行符的内容(开启转义)
echo -e "a\nb\nc"

2.printf(格式化并输出结果)

(1)作用:格式化并输出结果
(2)语法:
printf FORMAT [ARGUMENT]…
printf OPTION

(3)转义序列

(4)格式替代符

(6)示例:
常见格式化字符

printf "%d %s \t %d \n" 100 "hello world" 200

3.clear(清除屏幕)

(1)作用:清除屏幕

4.history(显示与管理历史命令记录)

(1)作用:显示与管理历史命令记录
(2)语法:history [参数]
(3)参数:

-c 清空命令记录-d 删除指定序号的命令记录-n 读取命令记录

(4)示例:

  • 显示执行过的全部命令记录
history
  • 显示执行过的最近5条命令
history 5
  • 重新执行2039命令
!2039
  • 重新执行上一条命
!!
  • 将搜索与你输入相匹配的最近一个命令,并重新执行它
!ls
  • 调用命令历史记录的递归搜索
    ctrl+r

  • 如果想要删除特定命令

history -d 1234
  • 清空全部历史记录
history -c

5.login/logout(登入/登出系统)

(1)作用:登入/登出系统
(2)示例:

  • 切换登录用户
login
  • 退出用户登录
logout

6.exit(退出终端/ssh连接)

(1)作用:退出终端/ssh连接

十二、命令相关

1.xargs(过滤器)

(1)作用:是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
(2)语法:
xargs [options] [command [initialarguments]]
(3)参数:

-n 多行输出-d 自定义一个定界符-I 指定一个替换字符串{}-t 打印出 xargs 执行的命令-p 执行每一个命令时弹出确认

(4)示例:

  • 多行输入单行输出
cat file.txt | xargs
  • 多行输出
cat file.txt | xargs -n3
  • 自定义分隔符
echo "helloXhelloXhelloXhelloX" | xargs -dX
  • 执行每一个命令时弹出确认
echo "helloXhelloXhelloXhelloX" | xargs -dX -p
  • 指定一个替换字符串{}
cat cat.txt | xargs -I {} echo {}
  • 打印出 xargs 执行的命令
cat cat.txt | xargs -t -I {} echo {}
  • 将当前目录下所有.txt文件移动到dir目录下
ls *.txt | xargs -I {} mv {} ./dir
  • 使用wget下载url-list.txt下所有的URL
cat url-list.txt | xargs wget -c

2.exec(调用并执行指定的命令)

(1)作用:调用并执行指定的命令,在终端中执行后会退出终端
(2)语法:exec [参数] [命令]
(3)参数:

-c 执行指定的命令

(4)示例

  • 调用并执行指定的命令
exec -c echo hello world
  • 结合find命令使用
find . -name "*.txt" -exec ls {} \;

3.alias/unalias(设置/取消命令别名)

(1)作用:设置/取消命令别名
(2)示例:

  • 查看系统已经设置的别名
alias
  • 给命令设置别名
alias "ri=rm -i"
  • 取消别名
unalias ri

4.type(显示指定命令的类型)

(1)作用:显示指定命令的类型
(2)语法:type [参数] [命令]
(3)参数:

-a 可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。-p 只返回外部命令的信息,相当于which命令-f 只返回shell函数的信息-t 返回指定类型的信息

(4)类型:

alias 别名keyword 关键字,Shell保留字function 函数,Shell函数builtin 内建命令,Shell内建命令file 文件,磁盘文件,外部命令unfound 没有找到

(5)示例:

  • 查看命令类型
type -t ls # 别名type -t cut # 文件type -t for # 关键字type -t pwd # 内部命令
  • 显示包含该命令的所有位置
type -a pwd

十三、时间相关

1.date(显示或设定系统日期和时间)

(1)作用:显示或设定系统日期和时间
(2)语法:
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[
CC]YY][.ss]]

(3)参数:

-d <字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号;-s <字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号;-u 显示目前的格林威治时间

(4)日期格式字符串列表:

%H 小时(以00-23来表示)。%I 小时(以01-12来表示)。%K 小时(以0-23来表示)。%l 小时(以0-12来表示)。%M 分钟(以00-59来表示)。%P AM或PM。%r 时间(含时分秒,小时以12小时AM/PM来表示)。%s 总秒数。起算时间为1970-01-01 00:00:00UTC。%S 秒(以本地的惯用法来表示)。%T 时间(含时分秒,小时以24小时制来表示)。%X 时间(以本地的惯用法来表示)。%Z 市区。%a 星期的缩写。%A 星期的完整名称。%b 月份英文名的缩写。%B 月份的完整英文名称。%c 日期与时间。只输入date指令也会显示同样的结果。%d 日期(以01-31来表示)。%D 日期(含年月日)。%j 该年中的第几天。%m 月份(以01-12来表示)。%U 该年中的周数。%w 该周的天数,0代表周日,1代表周一,异词类推。%x 日期(以本地的惯用法来表示)。%y 年份(以00-99来表示)。%Y 年份(以四位数来表示)。%n 在显示时,插入新的一行。%t 在显示时,插入tab。MM 月份(必要)DD 日期(必要)hh 小时(必要)mm 分钟(必要)ss 秒(选择性)

(5)示例:

  • 以默认格式显示当前时间和日期
date
  • 以指定格式输出当前时间和日期
date +"%Y%m%d %H:%M:%S"
  • 以指定格式输出当前时间和日期
date + "zh: %D %T %P%thello world"
  • 显示昨天的日期
date -d yesterday +"%Y%m%d"date -d next-month +%Y%m%ddate -d last-year +%Y%m%ddate -d "7 days" +%Y%m%d


  • 日期加减操作
date -d "+1 day" +%Y%m%ddate -d "-1 month" +%Y%m%ddate -d "+1 year" +%Y%m%d
  • 设置日期与时间
date --date '12:34:56'date -s '12:34:56'

2.cal(显示日历)

(1)作用:显示日历
(2)语法:cal [参数] [月份] [年份]
(3)参数

1显示一个月的月历-3 显示系统前一个月,当前月,下一个月的月历-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)-y 显示当前年份的日历

(4)示例:

  • 显示当前月份日历
calcal -1
  • 显示近期三个月的日历
cal -3
  • 显示指定年月的日历
cal 7 2018
  • 显示指定年份的全部日历
cal -y 2021cal 2021
  • 显示自1月1日的天数
cal -j

3.crontab(定时执行任务)

(1)作用:定时执行任务
(2)语法:crontab [参数]
(3)参数:

-e 编辑该用户的计时器设置-l 列出该用户的计时器设置-r 删除该用户的计时器设置-u 指定要设定计时器的用户名称

(4)使用crontab设置任务

  • 参数格式

    未设置的字段以星号*占位- 例:1-5,代表第1分钟到第5分钟执行(其余类推)/ 例:*/10,代表每10分钟执行(其余类推), 例:1,3,5,代表第1、3、5分钟执行(其余类推)
  • 字段说明

    minute表示分钟,0~59hour 表示小时,0~23day 表示日期,1~31month表示月份,1~12week 表示星期,0~7command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

(5)示例:

  • 创建、编辑计划任务
crontab -e
  • 查看当前计划任务
crontab -l
  • 删除该用户的计划任务
crontab -r
  • 每一分钟执行一次 /bin/ls
crontab -e # 编辑任务* * * * * /bin/ls
  • 每小时的第3和第15分钟执行/usr/bin/pwd
3,15 * * * * /usr/bin/pwd
  • 每月每天的午夜 0 点 30 分, 3 点 30 分, 6 点 30分…执行 echo “haha”:
30 0-23/3 * * * echo "haha"
  • 每两个小时重启一次smb
0 */2 * * * /etc/init.d/smb restart
  • 每周六、周日的1 : 10重启smb
10 1 * * 0,6 /etc/init.d/smb restart
  • 每月1号和15号的5:50检查/home 磁盘
50 5 1,15 * * fsck /home
  • 每周日晚上10执行/home/zh1/backup这个文件
0 22 * * 0 /home/zh1/backup
  • 每月的1、11、21、31日的6:30执行一次ls命令
30 6 */10 * * ls

4.at/atq/atrm(时间执行一个任务)

(1)作用:时间执行一个任务
(2)语法:at [参数] [脚本] [时间]
(3)参数:(at)

-d 删除系统中的等待作业(等效于atrm命令)-c 打印任务的内容-q 使用指定的列队-f 将指定文件提交等待作业-t 以时间的形式提交运行作业

(4)示例:

  • 查看系统中的等待作业
atq
  • 删除系统中的等待作业
at -d 1atrm 1
  • 交互式创建任务
at 11:10 amecho "hello world"ctrl+d 保存
  • 立即执行脚本
at -f script.sh now # 创建一个file.txt
  • 5分钟后执行脚本
at -f script.sh now+5 min
  • 在17:00执行脚本
at -f script.sh 17:00
  • 在2022年7月1日执行脚本
at -f script.sh 07/01/2022

5.time(显示命令执行时所消耗的时间)

(1)作用:显示命令执行时所消耗的时间
(2)语法:time [参数] [命令]
(3)时间:

real:real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。user:user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。sys:sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。

(4)示例:

  • 显示命令date的时间统计结果
time date

6.watch(周期性执行命令)

(1)作用:周期性执行命令
(2)语法:watch [参数] [命令]
(3)参数:

-n 指定间隔的时间-d 高亮显示变化的区域

(4)示例:

  • 重复执行uptime命令
watch uptime
  • 每隔1秒执行一次uptime,并高亮显示变化的数字
watch -n 1 -d uptime
  • 监测当前目录中file文件的变化
watch -d 'ls -l | grep file'
  • 监测磁盘inode和block数目变化情况
watch -n 1 df -i

十四、小工具

1.bc(数字计算器)

(1)作用:数字计算器
(2)语法:bc [选项]
(3)示例:

  • 进去计算器
bc
  • 计算

    加减乘除 :+ - * /平方:^平方根:sqrt sqrt(100)设置小数位: scale echo "scale=2; (2.344 - 1.3)/1" | bc进制转换:echo "obase=10;ibase=2;110101" | bc

2.ln(为文件创建快捷方式)

(1)作用:为文件创建快捷方式
(2)语法:ln [参数] 源文件 目标文件
(3)参数:

-s 对源文件建立符号链接,而非硬链接

(4)示例:

  • 创建软链接
ln -s file.txt sfile.txt

-创建硬链接

ln file.txt hfile.txt

3.shutdown/halt/poweroff/reboot(关闭/重启服务器)

(1)作用:关闭/重启服务器
(2)参数:

shutdown:-h 将系统关机-c 取消关机任务-r 将系统重启halt:-f 强制关机或重启reboot:-w 模拟重启过程,将过程写入到日志中

(3)示例:

  • 立即关机
shutdown -h nowhalthalt -fpoweroff
  • 立即重启
shutdown -r nowrebootreboot -w
  • 晚上11点关机
shutdown -h 21:00
  • 5分钟后关机,并通知所有人
shutdown +5 "System will shutdown after 5 minutes"
  • 取消所有关机任务
shutdown -c
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477