https://www.linuxcool.com/
----------------------------------------------------------------
ls
(英文全拼: list directory contents)
命令用于 显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。
用法:ls [选项]... [文件]...
列出 <文件>(默认为当前目录)的信息。
如果既没有指定 -cftuvSUX 中任何一个,也没有指定 --sort,则按字母排序项目。
长选项的必选参数对于短选项也是必选的。
-a, --all 不要隐藏以 . 开头的项目
-A, --almost-all 列出除 . 及 .. 以外的所有项目
--author 与 -l 同时使用时,列出每个文件的作者
-b, --escape 以 C 风格的转义序列表示不可打印的字符
--block-size=大小 与 -l 同时使用时,打印大小前将其除以 <大小>;
例如:"--block-size=M";参见下方的 <大小> 格式
-B, --ignore-backups 不要列出以 ~ 结尾的项目
-c 与 -lt 一起使用时:按照 ctime 排序,并显示
ctime(文件状态信息最后变更的时间);
与 -l 一起使用时:显示 ctime 并按照名称排序;
其它情况:按照 ctime 排序,最新的最前
-C 逐列列出项目
--color[=何时] 指定 <何时> 使用彩色输出;更多信息请见下文
-d, --directory 列出目录本身,而不是目录的内容
-D, --dired 产生适合 Emacs 的 dired 模式使用的输出
-f 按照目录顺序列出各项目
-F, --classify[=何时] 指定 <何时> 在项目后追加指示符号(*/=@| 中的一个)
--file-type 类似,但不追加 "*" 字符
--format=关键字 across 同 -x、commas 同 -m、horizontal 同 -x、
long 同 -l、single-column 同 -1、verbose 同 -l、
vertical 同 -C
--full-time 等于 -l --time-style=full-iso
-g 类似 -l,但不列出所有者
--group-directories-first
将目录排在文件前面;
此选项可与 --sort 一起使用,但是一旦使用
--sort=none (-U) 则禁用此选项
-G, --no-group 使用长列表格式时,不输出组名
-h, --human-readable 同时使用 -l 或 -s 时,将大小表示为 1K 234M 2G 等
--si 类似,但是使用 1000 的幂,而不是 1024
-H, --dereference-command-line
跟随命令行中列出的符号链接
--dereference-command-line-symlink-to-dir
跟随命令行中列出的、指向目录的符号链接
--hide=模式 隐藏符合 shell <模式> 的项目
(-a 或 -A 使此选项失效)
--hyperlink[=何时] 指定 <何时> 使用超链接显示文件名
--indicator-style=关键字 指定在项目名称后追加的指示符号的风格:
none(默认)、slash(同 -p)、
file-type(同 --file-type)、classify(同 -F)
-i, --inode 显示每个文件的索引编号(inode 号)
-I, --ignore=模式 隐藏符合 shell <模式> 的项目
-k, --kibibytes 显示文件系统使用量时,默认使用 1024 字节的块大小;
只用于 -s 和每个目录的总计
-l 使用长列表格式
-L, --dereference 当显示符号链接的文件信息时,显示符号链接指向
的文件的信息,而非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-n, --numeric-uid-gid 类似 -l,但列出用户和组的 ID 号
-N, --literal 输出不加引号的项目名称
-o 类似 -l,但不列出有关组的信息
-p, --indicator-style=slash
对目录追加 "/" 作为指示符号
-q, --hide-control-chars 以 "?" 字符代替不可打印的字符
--show-control-chars 原样显示无法打印的字符(这是默认行为,除非被调用
时的程序名是 "ls" 且在终端中进行输出)
-Q, --quote-name 在项目名称两侧加上双引号
--quoting-style=关键字 使用指定的加引号方式显示项目名称:
literal、locale、shell、shell-always、
shell-escape、shell-escape-always、c、escape
(该选项优先于 QUOTING_STYLE 环境变量)
-r, --reverse 排序时逆序排列
-R, --recursive 递归地列出子目录
-s, --size 显示给每个文件分配的大小,单位为块
-S 根据文件大小排序,最大的最前
--sort=关键字 按照 <关键字> 而非名称进行排序:none(同 -U)、
size(同 -S)、time(同 -t)、version(同 -v)、
extension(同 -X)、width
--time=关键字 改变使用的时间类型,默认为修改时间;
访问时间(同 -u):atime、access、use;
变更时间(同 -c):ctime、status;
创建时间:birth、creation;
和 -l 同时使用时,<关键字> 指定要显示的时间类型;
和 --sort=time 同时使用时,按照 <关键字> 进行排序
(最新的最前)
--time-style=时间风格
使用 -l 时显示的时间/日期格式;参见下面
<时间风格> 的相关内容
-t 按时间排序,最新的最前;参见 --time
-T, --tabsize=列数 指定制表符宽度为 <列数>,而非默认的 8
-u 与 -lt 同时使用时:显示访问时间且按访问时间排序;
与 -l 同时使用时:显示访问时间但按名称排序;
其他情况:按访问时间排序,最新的最前
-U 不进行排序;按照目录顺序列出项目
-v 对文本中的数字(或版本号)进行自然排序
-w, --width=列数 设置输出宽度为 <列数>。0 表示无限制
-x 逐行列出项目而不是逐列列出
-X 按照扩展名的字母顺序排序
-Z, --context 输出每个文件的所有安全上下文信息
--zero 以 NUL 字符而非换行结束每个输出行
-1 每行只列出一个文件
--help 显示此帮助信息并退出
--version 显示版本信息并退出
<大小> 参数是一个整数,后面可以跟一个单位(例如:10K 指 10*1024)。
可用的单位有 K、M、G、T、P、E、Z、Y(1024 的幂)以及 KB、MB、...(1000 的幂)。
也可以使用二进制前缀:KiB=K、MiB=M,以此类推。
<时间风格> 参数可以是 full-iso、long-iso、iso、locale,或者 +格式。
<格式> 的解析方式同 date(1)。如果 <格式> 是 格式1<换行符>格式2 的话,
则 <格式1> 将应用于时间较久远的文件,<格式2> 将应用于时间较近的文件。
<时间风格> 如果带有 "posix-" 前缀,则它只会在区域设置非 POSIX 时生效。
另外,可以使用 TIME_STYLE 环境变量设置默认使用的风格。
<何时> 参数的默认值是 "always",也可以设为 "auto" 或 "never"。
使用颜色来区分文件类型的功能默认禁用,也可以使用 --color=never 禁用。
若使用 --color=auto 选项,ls 只在标准输出连接至终端时才生成颜色代码。
LS_COLORS 环境变量可以改变颜色设置。可以使用 dircolors(1) 命令来设置它。
退出状态:
0 表示正常,
1 表示小问题(例如:无法访问子目录),
2 表示严重问题(例如:无法使用命令行参数)。
GNU coreutils 在线帮助:
请向 报告任何翻译错误
完整文档
或者在本地使用:info '(coreutils) ls invocation'
----------------------------------------------------------------
cd
(英文全拼: change directory)
命令用于 切换路径
cd命令来自英文词组“change directory”的缩写,
其功能是用于更改当前所处的工作目录,路径可以是绝对路径,
也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。
语法格式:cd [参数] [目录名]
常用参数:
-L 切换至符号链接所在的目录
-P 切换至符号链接对应的实际目录
-- 切换至上次所在目录
~ 切换至用户家目录
.. 切换至当前位置的上一级目录
. 则是表示目前所在的目录
参考示例
切换到指定目录: [root@linuxcool ~]# cd /Dir
[root@linuxcool Dir]#
切换至当前用户的家目录: [root@linuxcool Dir]# cd ~
[root@linuxcool ~]#
进入到上一级所在目录: [root@linuxcool ~]# cd ..
[root@linuxcool /]#
返回到上一次所在目录: [root@linuxcool /]# cd - /root
[root@linuxcool ~]#
----------------------------------------------------------------
pwd
(英文全拼:print work directory)
命令用于 显示当前所在目录
----------------------------------------------------------------
ping
命令用于 检测与另一个主机之间的网络连接
执行 ping 指令会使用 ICMP(Internet Control Message Protocol) 传输协议,
发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
语法
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
参数说明:
-d 使用Socket的SO_DEBUG功能。
-c <完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-I<网络界面> 使用指定的网络接口送出数据包。
-l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
-p<范本样式> 设置填满数据包的范本样式。
-q 不显示指令执行过程,开头和结尾的相关信息除外。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-R 记录路由过程。
-s<数据包大小> 设置数据包的大小。
-t<存活数值> 设置存活数值TTL的大小。
-v 详细显示指令的执行过程。
-w 在 deadline 毫秒后退出。
-W 在等待 timeout 毫秒后开始执行。
----------------------------------------------------------------
ifconfig
命令用于 显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
语法
ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
参数说明:
add<地址> 设置网络设备IPv6的IP地址。
del<地址> 删除网络设备IPv6的IP地址。
down 关闭指定的网络设备。
<硬件地址> 设置网络设备的类型与硬件地址。
io_addr 设置网络设备的I/O地址。
irq 设置网络设备的IRQ。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的MTU。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
up 启动指定的网络设备。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
-promisc 关闭或启动指定网络设备的promiscuous模式。
[IP地址] 指定网络设备的IP地址。
[网络设备] 指定网络设备的名称。
----------------------------------------------------------------
hostname
命令用于 查看当前服务器的主机名
----------------------------------------------------------------
hostnamectl
(英文全拼: hostname control)
命令用于 显示当前系统的主机名称及系统信息
语法格式:hostnamectl [参数]
常用参数
set-hostname 设置主机名
status 显示主机名
-H 操作远程主机
----------------------------------------------------------------
ssh
命令用于 通过 SSH Client 我们可以连接到运行了 SSH Server 的远程机器上
语法格式:ssh [用户名]@[IP] [参数]
常用参数
-p SSH Server 监听的端口,如果不指定的话就为默认值 22
登出 exit
----------------------------------------------------------------
scp
命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
语法
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
简易写法
scp [可选参数] file_source file_target
参数说明:
-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
实例
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3
----------------------------------------------------------------
service
命令用于 对系统服务进行管理
基本语法
service 服务名 start|stop|restart|status
start 启动
stop 停止
restart 重启
status 查看状态
----------------------------------------------------------------
systemctl
(英文全拼: system control)
命令用于 管理系统服务
从RHEL/CentOS7版本之后初始化进程服务init被替代成了systemd服务,
systemd初始化进程服务的管理是通过systemctl命令完成的,
从功能上涵盖了之前service、chkconfig、init、setup等多个命令的大部分功能。
语法格式:systemctl 参数 [动作] [服务名]
常用参数:
-a 显示所有单位
-f 覆盖任何冲突的符号链接
-H 设置要连接的主机名
-M 设置要连接的容器名
-n 设置要显示的日志行数
-o 设置要显示的日志格式
-q 静默执行模式
-r 显示本地容器的单位
-s 设置要发送的进程信号
-t 设置单元类型
--help 显示帮助信息
--version 显示版本信息
常用动作:
start 启动服务
stop 停止服务
restart 重启服务
enable 设置服务开机自启
disable 取消服务开机自启
status 查看服务状态
list 显示所有已启动服务
----------------------------------------------------------------
setup
命令用于 系统配置工具
setup命令是一个基于文本界面的系统管理工具,
集成了用户认证管理、防火墙管理、网络管理和系统服务管理。
语法格式:setup
----------------------------------------------------------------
init
(英文全拼: initialize)
命令用于 切换系统运行级别
init命令来自英文单词“initialize”的缩写,其功能是用于切换系统运行级别。
init命令是Linux系统中的进程初始化工具,是一切服务程序的父进程,
它的进程号永远为1,管理员可以使用init命令对系统运行级别进行自由切换,
亦可进行重启、关机等操作。
语法格式:init [参数]
常用参数:
0 关机
1 单用户
2 多用户
3 完全多用户模式
4 无功能
5 图形界面
6 重启
----------------------------------------------------------------
chkconfig
(英文全拼: Check config)
命令用于 管理服务程序
chkconfig命令来自英文词组“Check config“的缩写,其功能是用于管理服务程序。
chkconfig命令由红帽公司遵循GPL开源协议开发而成,
能够用于日常管理服务程序的自启动开启、自启动关闭等工作。
随着RHEL/CentOS 8版本系统的发布,该命令功能逐步被systemctl命令替代。
语法格式:chkconfig [参数] [服务名]
常用参数:
off 不随开机而自动运行
on 随开机而自动运行
--add 将服务添加至管理列表
--del 将服务移除出管理列表
--list 显示当前已有的全部服务列表
--short 使用简短格式输出信息
--version 显示版本信息
----------------------------------------------------------------
sync
命令用于 强制被改变的内容立刻写入磁盘
sync命令用于强制被改变的内容立刻写入磁盘,更新信息速度非常快,
在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,
等到适当的时候再写入磁盘,以提高系统的运行效率。
sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。
用户通常不需执行sync命令,
系统会自动执行update或bdflush操作,将缓冲区的数据写 入磁盘。
只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。
语法格式:sync [参数]
常用参数:
--help 显示命定详细帮助信息
--version 显示版本号
----------------------------------------------------------------
halt
命令用于 停机,关闭系统,但不断电
halt命令的功能是用于关闭当前服务器系统,
类似于poweroff与shutdown命令,没有太大差别。
语法格式:halt [参数]
常用参数:
-a 关闭系统前不同步数据
-d 不写入日志文件
-f 强制关机或重启而不询问
-i 关机或重启前关掉所有的网络服务
-w 模拟关机,将过程写入到日志文件
--verbose 显示执行过程详细信息
----------------------------------------------------------------
poweroff
命令用于 关机,断电
poweroff命令来自英文单词“关机”,其功能是用于关闭操作系统。
很多学习者会着迷于对比poweroff、halt、shutdown、init 0等命令之间的区别,
但我们要跟大家说明的是,它们都是Linux系统中的关机命令,体感上没有区别,
更多地是依据个人喜好来选择的。
语法格式:poweroff [参数]
常用参数:
-d 关机时不写入任何信息到日志文件
-f 强制关闭操作系统而不询问
-h 关机前将所有硬件设置为备用模式
-i 关机前先关闭所有的网卡
-n 关机时不执行同步操作
-w 模拟关机操作并记录过程到日志文件
--help 显示帮助信息
----------------------------------------------------------------
reboot
命令用于 重新启动计算机
reboot命令的功能是用于重新启动计算机。
与halt和shutdown命令相似,reboot命令的作用就是用于重启系统,简单快捷。
语法格式:reboot [参数]
常用参数:
-d 不将重启系统的过程写入日志中
-f 强制重启系统而不询问
-i 关闭所有的网络服务然后再重启系统
-n 直接重启系统,不保存当前资料
-w 仅模拟重启过程,将过程写入日志中
--verbose 显示执行过程详细信息
----------------------------------------------------------------
shutdown
命令用于 关闭服务器的系统
shutdown命令来自英文单词“关闭”,其功能是用于关闭服务器的系统,
作用同于poweroff命令。
语法格式:shutdown [参数] [对象]
常用参数:
-c 取消关机任务
-f 关机时不检查文件系统
-F 关机时先检查文件系统
-h 将系统立即关机
-k 发送信息给所有用户
-n 不调用init程序进行关机
-P 系统关机后切断电源
-r 将系统立即重启
-s 关闭此计算机,非立即操作
-t 设置距离关闭计算机还剩余的秒数
参考示例
将当前服务器立即关机: [root@linuxcool ~]# shutdown -h now
将当前服务器立即重启: [root@linuxcool ~]# shutdown -r now
设定当前的服务器指定时间自动关机,格式为”小时:分钟“: [root@linuxcool ~]# shutdown -h 21:00 Shutdown scheduled for Wed 2023-05-18 21:00:00 CST, use 'shutdown -c' to cancel.
设定当前的服务器5分钟后关机,同时发送警告信息给所有已登录的用户: [root@linuxcool ~]# shutdown +5 "System will shutdown after 5 minutes" Shutdown scheduled for Wed 2023-05-18 20:47:25 CST, use 'shutdown -c' to cancel.
取消当前服务器上已有的关机任务: [root@linuxcool ~]# shutdown -c
----------------------------------------------------------------
man
(英文全拼: manual)
命令用于 查看帮助信息
man命令来自英文单词“manual”的缩写,中文译为“帮助手册”,
其功能是用于查看命令、配置文件及服务的帮助信息。
网上搜索来的资料普遍不够准确(LinuxCool.Com除外~),
或者缺乏系统性(LinuxProbe.Com除外~),
质量不高造成学习进度缓慢,
而man命令作为权威的官方工具则很好地解决了上述两点弊病,
一份完整的帮助信息包含以下信息。
man文档的结构和含义:
NAME 命令的名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 介绍说明
EXAMPLES 演示
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式
语法格式:man [参数] 对象
常用参数:
-a 在所有手册页中搜索关键词
-C 指定用户的配置文件
-d 显示调式信息
-d 检查新加入的文件是否有错误
-f 显示指定关键字的简短描述信息
-i 忽略大小写
-I 区分大小写
-K 在所有手册页中搜索字符串
-l 格式化和显示本地手册文件
-M 指定手册搜索的路径
-p 指定内容时使用分页程序
-R 以指定编码输出手册内容
-S 指定搜索的手册页类型列表
-w 显示文件所在位置
--encoding 使用指定编码输出手册页内容
--help 显示帮助信息
--regex 使用正则表达式搜索手册页
--usage 显示简短使用方法
--version 显示版本信息
--wildcard 使用通配符搜索手册页
快捷键:
f 下翻一页
b 上翻一页
Enter 按行下翻
Space 按页下翻
q 退出
/字符串 在手册页中查找字符串
参考示例
查看指定命令的帮助信息: [root@linuxcool ~]# man ls
查看指定配置文件的帮助信息: [root@linuxcool ~]# man 5 passwd
找到某个命令的帮助信息的存储位置: [root@linuxcool ~]# man -w ls /usr/share/man/man1/ls.1.gz
找到某个配置文件的帮助信息的存储位置: [root@linuxcool ~]# man -w 5 passwd /usr/share/man/man5/passwd.5.gz
查看cd (1p) 的 1p: [root@hadoop100 ~]# man 1p cd
----------------------------------------------------------------
help
命令用于 显示帮助信息
help命令的功能是用于显示帮助信息,能够输出Shell内部命令的帮助内容,
但对于外部命令则无法使用,需要用man或info命令进行查看了。
语法格式:help [参数] 命令名
常用参数:
-d 显示命令的简短描述
-m 使用man手册格式显示帮助信息
-s 显示短格式的帮助信息
----------------------------------------------------------------
type
命令用于 查看命令类型
type命令来自英文单词“类型”,其功能是用于查看命令类型,
如需区分某个命令是Shell内部指令还是外部命令,则可以使用type命令进行查看。
语法格式:type [参数] 命令名称
常用类型:
builtin 内部指令
file 文件
function 函数
keyword 关键字
alias 别名
unfound 没有找到
参考示例
查看某指定别名命令的类型信息: [root@linuxcool ~]# type ls ls is aliased to `ls --color=auto'
查看某指定Shell内部指令的类型信息: [root@linuxcool ~]# type cd cd is a shell builtin
查看某指定关键字的类型信息: [root@linuxcool ~]# type if if is a shell keyword
----------------------------------------------------------------
mkdir
(英文全拼: make directories)
命令用于 创建目录文件(创建文件夹)
mkdir命令来自英文词组”make directories“的缩写,其功能是用来创建目录文件。
使用方法简单,
但需要注意若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。
而目录不存在,但具有嵌套的依赖关系时,例如/Dir1/Dir2/Dir3/Dir4/Dir5,
要想一次性创建则需要加入-p参数,进行递归操作。
语法格式 : mkdir [参数] 目录名
常用参数:
-m 创建目录的同时设置权限
-p 递归创建多级目录
-v 显示执行过程详细信息
-z 设置目录安全上下文
参考示例
建立一个目录文件: [root@linuxcool ~]# mkdir Dir1
创建一个目录文件并设置700权限,不让除所有主以外任何人读、写、执行它: [root@linuxcool ~]# mkdir -m 700 Dir2
一次性创建多个目录文件: [root@linuxcool ~]# mkdir Dir3 Dir4 Dir5
在系统根目录中,一次性创建多个有嵌套关系的目录文件: [root@linuxcool ~]# mkdir -p /Dir1/Dir2/Dir3/Dir4/Dir5
----------------------------------------------------------------
rmdir
(英文全拼: remove directory)
命令用于 删除空目录文件(删除文件夹)
rmdir命令来自英文词组“remove directory”的缩写,其功能是用于删除空目录文件。
rmdir命令仅能够删除空内容的目录文件,
如需删除非空目录时,则需要使用带有-R参数的rm命令进行操作。
而rmdir命令的-p递归删除操作并不意味着能删除目录中已有的文件,
而是要求每个子目录都必须是空的。
语法格式:rmdir [参数] 目录名
常用参数:
-p 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--version 显示版本信息
参考示例
删除指定的空目录: [root@linuxcool ~]# rmdir Dir
删除指定的空目录,及其内的子空目录: [root@linuxcool ~]# rmdir -p Dir
删除指定的空目录,并显示删除的过程: [root@linuxcool ~]# rmdir -v Dir rmdir: removing directory, 'Dir'
----------------------------------------------------------------
rm
(英文全拼: remove)
命令用于 删除文件或目录
rm命令来自英文单词“remove”的缩写,中文译为“消除”,
其功能是用于删除文件或目录,一次可以删除多个文件,
或递归删除目录及其内的所有子文件。
rm也是一个很危险的命令,使用的时候要特别当心,
尤其对于新手更要格外注意,
如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。
所以我们在执行之前一定要再次确认下在哪个目录中,
到底要删除什么文件,考虑好后再敲击回车键,时刻保持清醒的头脑。
语法格式:rm [参数] 文件名
常用参数:
-d 仅删除无子文件的空目录
-f 强制删除文件而不询问
-i 删除文件前询问用户是否确认
-r 递归删除目录及其内全部子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--version 显示版本信息
参考示例
删除文件默认会进行二次确认,敲击y进行确认: [root@linuxcool ~]# rm File.cfg rm: remove regular file 'File.cfg'? y
强制删除文件而无需二次确认: [root@linuxcool ~]# rm -f File.cfg
删除指定目录及其内的全部子文件,一并都强制删除: [root@linuxcool ~]# rm -rf Dir
强制删除当前工作目录内的所有以.txt为后缀的文件: [root@linuxcool ~]# rm -f *.txt
【离职小妙招,谨慎!!!】强制清空服务器系统内的所有文件: [root@linuxcool ~]# rm -rf /*
----------------------------------------------------------------
touch
命令用于 创建空文件与修改时间戳
touch命令的功能是用于创建空文件与修改时间戳。
如果文件不存在,则会创建出一个空内容的文本文件;
如果文件已经存在,则会对文件的Atime(访问时间)和Ctime(修改时间)进行修改操作,
管理员可以完成此项工作,而普通用户只能管理主机的文件。
语法格式:touch [参数] 文件名
常用参数:
-a 设置文件的读取时间记录
-c 不创建新文件
-d 设置时间与日期
-m 设置文件的修改时间记录
-t 设置文件的时间记录,格式与date命令相同
--help 显示帮助信息
--version 显示版本信息
参考示例
创建出一个指定名称的空文件: [root@linuxcool ~]# touch File.txt
结合通配符,创建出多个指定名称的空文件: [root@linuxcool ~]# touch File{1..5}.txt
修改指定文件的查看时间和修改时间: [root@linuxcool ~]# touch -d "2023-05-18 15:44" File.cfg
[root@linuxcool ~]# stat File.cfg
File: File.cfg Size: 1256 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 35319937 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2023-05-18 15:44:00.000000000 +0800 Modify: 2023-05-18 15:44:00.000000000 +0800 Change: 2023-05-06 15:43:47.843170709 +0800 Birth: -
----------------------------------------------------------------
cp
(英文全拼: copy)
命令用于 复制文件或目录
cp命令来自英文单词“copy”的缩写,中文译为“复制”,其功能是用于复制文件或目录。
cp命令能够将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。
-r参数用于递归操作,复制目录时若忘记添加则会直接报错,
而-f参数则用于当目标文件已存在时会直接覆盖不再询问,这两个参数尤为常用。
语法格式:cp [参数] 源文件名 目标文件名
常用参数:
-a 功能等价于“pdr”参数组合
-b 覆盖目标文件前先进行备份
-d 复制链接文件时,将目标文件也建立成链接文件
-f 若目标文件已存在,则会直接覆盖
-i 若目标文件已存在,则会询问是否覆盖
-l 对源文件建立硬链接,而非复制文件
-p 保留源文件或目录的所有属性信息
-r 递归复制所有子文件
-s 对源文件建立软链接,而非复制文件
-v 显示执行过程详细信息
参考示例
复制指定源文件,并定义新文件名称: [root@linuxcool ~]# cp File1.cfg File2.cfg
复制指定源目录,并定义新目录名称: [root@linuxcool ~]# cp -r Dir1 Dir2
复制文件时,保留其原始权限及用户归属信息: [root@linuxcool ~]# cp -a File1.cfg File2.cfg
将指定文件复制到/etc目录中,并覆盖已有文件,不进行询问: [root@linuxcool ~]# cp -f File1.cfg /etc
将多个文件一同复制到/etc目录中,如已有目标文件名称则默认询问是否覆盖: [root@linuxcool ~]# cp File1.cfg File2.cfg /etc cp: overwrite '/etc/File1.cfg'? y
----------------------------------------------------------------
alias
命令用于 设置命令别名
alias命令来自英文单词“alias”,中文译为“别名”,
其功能是用于设置命令别名信息。
我们可以使用alias将一些较长的命令进行简写,
往往几十个字符的命令会变成几个字母而已,大大提高了工作效率。
用户必须使用单引号将原来的命令引起来,防止特殊字符导致错误。
并且alias命令的作用只局限于该次登入的操作,
若要每次登入都能够使用这些命令别名,
则可将相应的alias命令存放到bash的初始化文件 /etc/bashrc中。
语法格式:alias [参数] [对象]
常用参数:
-p 显示系统中已有的命令别名
----------------------------------------------------------------
mv
(英文全拼: move)
命令用于 移动或改名文件
mv命令来自英文单词”move“的缩写,中文译为”移动“,
其功能与英文含义相同,能够用于对文件进行剪切和重命名操作。
这是一个被高频使用的文件管理命令,我们需要留意它与复制命令的区别。
cp命令是用于文件的复制操作,文件个数是增加的,
而mv则为剪切操作,也就是对文件进行移动(搬家)操作,
文件位置发生变化,但总个数并无增加。
而在同一个目录内对文件进行剪切的操作,实际应理解成重命名操作,
例如下面的实例一所示。
语法格式:mv [参数] 源文件名 目标文件名
常用参数:
-b 覆盖前为目标文件创建备份
-f 强制覆盖目标文件而不询问
-i 覆盖目标文件前询问用户是否确认
-n 不要覆盖已有文件
-u 当源文件比目标文件更新时,才执行覆盖操作
-v 显示执行过程详细信息
-Z 设置文件安全上下文
--help 显示帮助信息
--version 显示版本信息
参考示例
对指定文件进行剪切后粘贴(重命名)操作: [root@linuxcool ~]# mv File1.cfg File2.cfg
将指定文件移动到/etc目录中,保留文件原始名称: [root@linuxcool ~]# mv File2.cfg /etc
将指定目录移动到/etc目录中,并定义新的目录名称: [root@linuxcool ~]# mv Dir1 /etc/Dir2
将/home目录中所有的文件都移动到当前工作目录中,遇到已存在文件则直接覆盖: [root@linuxcool ~]# mv -f /home/* .
----------------------------------------------------------------
cat
(英文全拼: concatenate files and print)
命令用于 在终端设备上显示文件内容(查看文件)
cat命令来自英文词组”concatenate files and print“的缩写,
其功能是用于在终端设备上显示文件内容。
在Linux系统中有很多用于查看文件内容的命令,
例如more、tail、head……等等,每个命令都有各自的特点。
cat命令适合查看内容较少、纯文本的文件。
对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,
用户往往看不清所显示的具体内容,只好按Ctrl+c键中断命令执行,
所以对于大文件,干脆用more命令吧~
语法格式:cat [参数] 文件名
常用参数:
-A 等价于”-vET”参数组合
-b 显示行数(空行不编号)
-e 等价于”-vE”参数组合
-E 每行结束处显示$符号
-n 显示行数(空行也编号)
-s 显示行数(多个空行算一个编号)
-t 等价于”-vT”参数组合
-T 将TAB字符显示为^I符号
-v 使用^和M-引用,除了LFD和TAB之外
--help 显示帮助信息
--version 显示版本信息
----------------------------------------------------------------
more
命令用于 分页显示文本文件内容(查看文件)
more命令的功能是用于分页显示文本文件内容。
如果文本文件中的内容较多较长,使用cat命令读取后则很难看清,
这时使用more命令进行分页查看就更加合适了,
可以把文本内容一页一页地显示在终端界面上,
用户每按一次回车即向下一行,每按一次空格即向下一页,直至看完为止。
语法格式:more [参数] 文件名
常用参数:
-c 不滚屏,先显示内容再清除旧内容
-d 显示提醒信息,关闭响铃功能
-f 统计实际的行数,而非自动换行的行数
-l 将“^L”当作普通字符处理,而不暂停输出信息
-p 先清除屏幕再显示文本文件的剩余内容
-s 将多个空行压缩成一行显示
-u 禁止下划线
-数字 设置每屏显示的最大行数
+数字 设置从第N行开始显示内容
+/关键词 从指定关键词开始显示文件内容
快捷键
space 下翻一页
Enter 下翻一行
q 退出
f 下滚动一屏
b 上滚动一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
----------------------------------------------------------------
less
命令用于 分页显示文件内容(查看文件)
less命令的功能是用于分页显示文件内容。
分页显示的功能与more命令很相像,但more命令只能从前向后浏览文件内容,
而less命令则不仅能从前向后(PageDown键),还可以从后向前(PageUp键)浏览文件内容,
更加灵活。
语法格式:less [参数] 文件名
常用参数:
-b 设置缓冲区大小
-e 当文件显示结束后自动退出
-f 强制打开文件
-g 仅标识最后搜索的关键词
-i 忽略搜索时的大小写
-K 收到中断字符时,立即退出
-m 显示阅读进度百分比
-N 显示文件内容时带行号
-o 将要输出的内容写入到指定文件中
-Q 不使用警告音
-r 显示原始字符
-s 将连续多个空行视为一行
-S 在每行显示较多的内容,而不换行
-V 显示版本信息
-x 将TAB字符显示为指定个数的空格字符
-y 设置向前滚动的最大行数
--help 显示帮助信息
快捷键
space 下翻一页
[pagedown] 下翻一页
[pageup] 上翻一页
/字串 向下搜索 "字串",n 向下查找,N 向上查找
?字串 向上搜索 "字串",n 向下查找,N 向上查找
g 到文件开头
G 到文件末尾
----------------------------------------------------------------
echo
命令用于 输出字符串或提取后的变量值(输出内容到控制台)
echo命令来自英文单词“回声”,
其功能是用于在终端设备上输出指定字符串或变量提取后的值,
能够给用户一些简单的提醒信息,
亦可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息再来进行二次处理,
又或是同输出重定向符一起操作,将信息直接写入到文件中。
如需提取变量值,需在变量名称前加入$符号做提取,
变量名称一般均为大写形式。
语法格式:echo [参数] 字符串或$变量名
常用参数:
-e “\a” 发出警告音
-e “\b” 删除前面的一个字符
-e “\c” 结尾不加换行符
-e “\f” 换行后光标仍停留在原来的位置
-e “\n” 换行后光标移至行首
-e “\r” 光标移至行首但不换行
-E 禁止反斜杠转义
-n 不输出结尾的换行符
--version 显示版本信息
--help 显示帮助信息
参考示例
输出指定字符串到终端设备界面(默认为电脑屏幕): [root@linuxcool ~]# echo LinuxCool
LinuxCool
输出某个变量值: [root@linuxcool ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
搭配转义符一起使用,输出纯字符串内容: [root@linuxcool ~]# echo \$PATH
$PATH
搭配输出重定向符一起使用,将字符串内容直接写入文件中: [root@linuxcool ~]# echo "Hello World" > Doc.txt
搭配反引号执行命令,并将执行结果输出: [root@linuxcool ~]# echo `uptime`
16:16:12 up 52 min, 1 user, load average: 0.01, 0.02, 0.05
输出带有换行符的内容: [root@linuxcool ~]# echo -e "First\nSecond\nThird"
First
Second
Third
指定删除字符串中某些字符,随后将内容输出: [root@linuxcool ~]# echo -e "123\b456"
12456
----------------------------------------------------------------
head
命令用于 显示文件开头的内容
head命令的功能是显示文件开头的内容,默认为前10行。
语法格式:head [参数] 文件名
常用参数:
-c 设置显示头部内容的字符数
-n 设置显示行数
-q 不显示文件名的头信息
-v 显示文件名的头信息
--help 显示帮助信息
--version 显示版本信息
----------------------------------------------------------------
tail
命令用于 查看文件尾部内容
tail命令的功能是用于查看文件尾部内容,
例如默认会在终端界面上显示出指定文件的末尾十行,
如果指定了多个文件,则会在显示的每个文件内容前面加上文件名来加以区分。
高阶玩法的-f参数作用是持续显示文件的尾部最新内容,
类似于机场候机厅的大屏幕,总会把最新的消息展示给用户,
对阅读日志文件尤为适合,再也不需要手动刷新了。
-f参数是根据 文件的inode属性信息 来持续显示的。
如果用vim编辑器打开文件写入并保存,文件的inode属性信息 会改变,
所以无法继续持续显示。
语法格式:tail [参数] 文件名
常用参数:
-c 设置显示文件尾部的字符数
-f 持续显示文件尾部最新内容
-n 设置显示文件尾部的行数
--help 显示帮助信息
--pid 当指定PID进程结束时,自动退出命令
--retry 当文件无权限访问时,依然尝试打开
--version 显示版本信息
----------------------------------------------------------------
ln
(英文全拼: link)
命令用于 为文件创建快捷方式
ln命令来自英文单词“link”的缩写,中文译为“链接”,
其功能是用于为某个文件在另外一个位置建立同步的链接。
Linux系统中的链接文件有两种形式,
一种是硬链接(hard link),
另一种是软链接(symbolic link)。
软链接相当于Windows系统中的快捷方式文件,
原始文件被移动或删除后,软链接文件也将无法使用,
而硬链接则是通过将文件的inode属性块进行了复制 ,
因此把原始文件移动或删除后,硬链接文件依然可以使用。
删除软连接 rm -rf 软链接名
删除软连接对应的内容 rm -rf 软链接名/
语法格式:ln [参数] 源文件名 目标文件名
常用参数:
-b 为已存在的目标文件创建备份
-d 允许管理员创建目录的硬链接
-f 强制创建链接而不询问
-i 若目标文件已存在,则需要用户二次确认
-L 若目标文件为软链接时,找到其对应文件
-n 将指向目录的软链接视为普通文件
-P 若目标文件为软链接时,直接链接它自身
-r 创建相对于文件位置的软链接
-s 对源文件创建软链接
-S 设置备份文件的后缀
-t 设置链接文件存放于哪个目录
-v 显示执行过程详细信息
--backup 备份已存在的文件
--help 显示帮助信息
--version 显示版本信息
参考示例
为指定的源文件创建快捷方式(默认为硬链接形式): [root@linuxcool ~]# ln File1.cfg File2.cfg
为指定的源文件创建快捷方式(设定为软链接形式): [root@linuxcool ~]# ln -s File1.cfg File2.cfg
在指定的源文件创建快捷方式,并输出制作的过程信息: [root@linuxcool ~]# ln -v File1.cfg File2.cfg
'File1.cfg' => 'File2.cfg'
----------------------------------------------------------------
history
命令用于 显示与管理历史命令记录
history命令来自英文单词“历史”,其功能是用于显示与管理历史命令记录。
Linux系统默认会记录用户所执行过的所有命令,
可以使用history命令查阅它们,也可以对其记录进行修改和删除操作。
语法格式:history [参数]
常用参数:
-a 保存命令记录
-c 清空命令记录
-d 删除指定序号的命令记录
-n 读取命令记录
-r 读取命令记录到缓冲区
-s 添加命令记录到缓冲区
-w 将缓冲区信息写入到历史文件
----------------------------------------------------------------
date
命令用于 显示或设置系统日期与时间
date命令来自英文单词“时间、时钟”,其功能是用于显示或设置系统日期与时间信息。
运维人员可以根据想要的格式来输出系统时间信息,
时间格式MMDDhhmm[CC][YY][.ss],
其中 MM 为月份,
DD 为日,
hh 为小时,
mm 为分钟,
CC 为年份前两位数字,
YY 为年份后两位数字,
ss 为秒数。
语法格式:date [参数] [对象]
常用参数:
-d 显示系统时间
-f 显示日期文件中的每行时间
-r 显示文件内容的最后修改时间
-R 以RFC-2822格式显示时间
-s 设置系统时间
-u 显示格林威治时间
--help 显示帮助信息
--version 显示版本信息
参考示例
以默认格式输出系统当前的日期与时间信息: [root@linuxcool ~]# date
Thu May 18 09:14:35 CST 2023
按照“年-月-日”的指定格式输出系统当前的日期信息: [root@linuxcool ~]# date "+%Y-%m-%d"
2023-05-18
按照“小时:分钟:秒”的指定格式输出系统当前的时间信息: [root@linuxcool ~]# date "%H:%M:%S"
09:14:35
设置当前系统为指定的日期和时间: [root@linuxcool ~]# date -s "20241101 8:30:00"
Sun Nov 1 08:30:00 CST 2024
----------------------------------------------------------------
ntpdate
(英文全拼: NTP date)
命令用于 设置日期和时间
ntpdate命令来自英文词组”NTP date“的拼写,其功能是用于设置日期和时间。
ntpdate命令能够基于NTP协议设置Linux系统的本地日期和时间,
利用NTP服务的时钟过滤器来选择最优方案,大大提高了可靠性和精度,
让系统时间总是准确无误。
语法格式:ntpdate [参数]
常用参数:
-a 使用Keyid来认证全部数据包
-b 自动调整日期时钟
-d 设置调试方式
-e 设置延迟认证处理的时间秒数
-k 设置包含密钥信息的文件名
-o 设置发送轮询数据包时的NTP版本
-p 设置从每个服务器上获取的样本数目
-q 仅进行查询操作
-s 使用日志服务,而不是用标准输出
-t 设置等待响应的时间
-u 设置端口号发送数据包
-v 显示版本信息
参考示例
调整日期时钟: [root@linuxcool ~]# ntpdate -b
向指定NTP服务器同步时间: [root@linuxcool ~]# ntpdate ntp.aliyun.com
仅向指定NTP服务器查询时间,但不进行同步设置: [root@linuxcool ~]# ntpdate -q ntp.aliyun.com
----------------------------------------------------------------
cal
(英文全拼: Calendar)
命令用于 显示系统月历与日期
cal命令来自英文单词“Calendar”的缩写,中文译为“日历”,
其功能是用于显示系统月历与日期信息。
简单好用,无需过多介绍,想好需求后参考常用参数表格即可使用。
语法格式:cal [参数] [对象]
常用参数:
-1 显示本月的日历
-3 显示最近三个月的日历
-C 使用校准模式
-h 显示帮助信息
-j 显示在当年中的第几天(儒略日)
-l 单月份输出日历
-m 将星期一作为每月的第一天
-s 将星期天作为每月的第一天
-V 显示版本信息
-y 显示当年的日历
----------------------------------------------------------------
useradd
(英文全拼: User add)
命令用于 创建并设置用户信息
useradd命令来自英文词组“User add”的全拼,其功能是用于创建并设置用户信息。
使用useradd命令可以自动的完成创建用户的信息、基本组、家目录等工作,
并在创建的过程中对用户初始信息进行定制。
已创建的用户则需使用chmod命令修改账户信息,passwd命令修改密码信息。
语法格式:useradd [参数] 用户名
常用参数:
-c 添加备注文字
-d 设置新用户登录时所使用的家目录
-D 设置新用户的预设值
-e 设置用户的终止日期
-f 设置用户过期几日后永久停权
-g 设置用户对应的基本用户组
-G 设置用户对应的扩展用户组
-h 显示帮助信息
-k 设置用户的骨架目录
-l 不将用户添加到最近登录和登录失败数据库文件
-m 用户目录不存在时则自动创建
-M 不建立用户家目录
-n 不建立以用户名称为名的组
-o 允许创建重复UID的用户
-p 设置用户的密码
-r 建立系统帐号
-R 设置根目录
-s 设置新用户的默认Shell终端
-u 设置用户ID
-U 创建与用户同名的组,并将其加入
-Z 设置用户的SELinux映射角色
参考示例
创建指定的用户信息: [root@linuxcool ~]# useradd linuxprobe
创建指定的用户信息,但不创建家目录,亦不让登录系统: [root@linuxcool ~]# useradd -M -s /sbin/nologin linuxprobe
创建指定的用户信息,并自定义UID值: [root@linuxcool ~]# useradd -u 6688 linuxprobe
创建指定的用户信息,并追加指定组为该账户的扩展组: [root@linuxcool ~]# useradd -G root linuxprobe
创建指定的用户信息,并指定过期时间: [root@linuxcool ~]# useradd -e "2024/01/01" linuxprobe
----------------------------------------------------------------
passwd
(英文全拼: password)
命令用于 修改用户的密码值
passwd命令来自英文单词“password”的缩写,其功能适用于修改用户的密码值。
同时也可以对用户进行锁定等操作,但需要管理员身份才可以执行。
常用格式:passwd [参数] 用户名
常用参数:
-d 清除已有密码
-e 下次登录时强制修改密码
-f 强制执行操作而不询问
-k 设置用户在期满后能仍能正常使用
-l 锁定用户的密码值,不允许修改
-n 设置最小密码有效期
-S 显示当前密码状态
-u 解锁用户的密码值,允许修改
-w 设置密码到期前几天收到警告信息
-x 设置最大密码有效期
--help 显示帮助信息
--usage 显示简短的使用信息提示
----------------------------------------------------------------
id
命令用于 显示用户与用户组信息
id命令的功能是用于显示用户与用户组信息。
UID是指用户身份的唯一识别号码,相当于人类社会的身份证号码,
而GID则指用户组的唯一识别号码,用户仅有一个基本组,但可以有多个扩展组。
语法格式:id [参数] 用户名
常用参数:
-g 显示用户所属基本组的ID
-G 显示用户所属扩展组的ID
-n 显示用户所属基本组或扩展组的名称
-u 显示用户的ID
-Z 显示用户的安全上下文
--help 显示帮助信息
--version 显示版本信息
----------------------------------------------------------------
su
(英文全拼: switch user)
su命令来自英文单词“switch user”的缩写,其功能是用于切换用户身份。
管理员切换至任意用户身份而无须密码验证,
而普通用户切换至任意用户身份均需密码验证。
另外添加单个减号(-)参数为完全的身份变更,
不保留任何之前用户的环境变量信息。
语法格式:su [参数] 用户名
常用参数:
-- 完全的切换身份
-c 执行完指令后,自动恢复原来的身份
-f 不读取启动文件(适用于csh和tsch)
-l 切换身份时,也同时变更工作目录
-m 切换身份时,不要变更环境变量
-s 设置要执行的Shell终端
--help 显示帮助信息
--version 显示版本信息
参考示例
变更至指定用户身份: [root@linuxcool ~]# su linuxprobe
完全变更至指定用户身份: [root@linuxcool ~]# su - linuxprobe
----------------------------------------------------------------
who
命令用于 查看当前登录用户信息
who命令的功能是用于显示当前登录用户信息,
包含登录的用户名、终端、日期时间、进程等信息,
帮助运维人员了解当前系统的登入用户情况。
语法格式:who [参数]
常用参数:
-a 显示全部信息
-b 显示系统最近启动时间
-H 显示用户名、终端和时间
-l 显示系统登录进程
-p 显示由init生成的进程
-r 显示当前运行级别
-s 静默执行模式
-t 显示系统上次锁定时间
-u 显示已登录用户列表
--help 显示帮助信息
--version 显示版本信息
----------------------------------------------------------------
sudo
(英文全拼: super user do)
命令用于 授权普通用户执行管理员命令
sudo命令来自英文词组“super user do”的缩写,中文译为“超级用户才能干的事”,
其功能是用于授权普通用户执行管理员命令。
使用su命令变更用户身份虽然好用,但是需要将管理员的账户密码告诉他人,
总感觉心里不踏实,幸好有了sudo服务。
使用sudo服务可以授权某个指定的用户去执行某些指定的命令,
在满足工作需求的前提下尽可能少地放权,保证服务器的安全。
配置sudo服务可以直接编辑配置文件/etc/sudoers,
亦可以执行visudo命令进行设置,一切妥当后普通用户便能够使用sudo命令进行操作了。
语法格式:sudo [参数] 命令
常用参数:
-A 使用图形化界面读取用户密码值
-b 将要执行的命令放在后台执行
-E 保留用户原本的环境变量信息
-h 显示帮助信息
-H 将用户的家目录环境变量设置为/root
-i 模拟用户的初始登录过程
-k 下次强制验证当前用户的密码值
-K 删除用户的缓存信息,让密码有效期立即结束
-p 设置需要密码验证时的提示语
-r 设置新的SELinux映射角色
-s 设置默认调用的Shell终端
-t 设置新的SELinux安全上下文类型
-u 设置使用那位用户的身份执行
-v 设置需要验证当前用户的密码
-v 更新用户的缓存信息,让密码有效期延长5分钟
-V 显示版本信息
参考示例
查看当前用户有哪些被sudo服务授权的命令: [linuxprobe@linuxcool ~]$ sudo -l
使用某个被sudo服务允许的用户身份来执行管理员的重启命令: [root@linuxcool ~]# sudo -u linuxprobe "reboot"
使用当前用户身份,基于sudo命令来执行管理员的重启命令: [root@linuxcool ~]# sudo reboot
----------------------------------------------------------------
userdel
(英文全拼: user delete)
命令用于 删除用户账户
userdel命令来自英文词组“user delete”的缩写,其功能是删除用户账户。
Linux系统中一切都是文件,
用户信息被保存到了/etc/passwd、/etc/shadow以及/etc/group文件中,
因此使用userdel命令实际就是帮助我们删除了指定用户在上述三个文件中的对应信息。
语法格式:userdel [参数] 用户名
常用参数:
-f 强制删除用户的账号而不询问
-h 显示帮助信息
-r 删除用户的家目录及其内全部子文件
-Z 删除用户的SELinux映射用户
参考示例
删除指定的用户账户信息: [root@linuxcool ~]# userdel linuxprobe
删除指定的用户账户信息及家目录: [root@linuxcool ~]# userdel -r linuxprobe
完全删除用户:
userdel -r 用户名
find / -name "*用户名*"
----------------------------------------------------------------
groupadd
(英文全拼: group add)
命令用于 创建新的用户组
groupadd命令来自英文词组“group add”,其功能是用于创建新的用户组。
每个用户在创建时都有一个与其同名的基本组,
后期可以使用groupadd命令创建出新的用户组信息,
让多个用户加入到指定的扩展组中,为后续的工作提供了良好的文档共享环境。
语法格式:groupadd [参数] 用户组
常用参数:
-f 若用户组已存在,则以成功状态退出
-g 设置用户组ID
-h 显示帮助信息
-K 覆盖配置文件“/etc/login.defs”
-o 允许创建重复ID的用户组
-p 设置用户组密码
-r 创建系统用户组
参考示例
创建一个新的用户组: [root@linuxcool ~]# groupadd linuxprobe
创建一个新的用户组,并指定GID号码: [root@linuxcool ~]# groupadd -g 6688 linuxprobe
创建一个新的用户组,设定为系统工作组: [root@linuxcool ~]# groupadd -r linuxprobe
----------------------------------------------------------------
usermod
(英文全拼: user modify)
命令用于 修改用户账号信息
usermod命令来自英文词组“user modify”的缩写,
其功能是用于修改用户账号中的各项参数。
用户创建后才发现信息错误?不用删除后再重新建立的!
可以用usermod命令直接修改用户信息,并且参数会立即生效。
语法格式:usermod [参数] 用户名
常用参数:
-a 将用户添加至扩展组中
-c 修改用户账号的备注文字
-d 修改用户登录时的家目录
-e 修改用户账号的有效期限
-f 设置在密码过期后多少天关闭该账号
-g 修改用户所属的基本群
-G 修改用户所属的扩展群
-l 修改用户账号名称
-L 锁定用户密码,使密码立即失效
-m 将用户主目录内容移动到新位置
-o 允许重复的用户ID
-p 设置用户的新密码
-s 修改用户登录后使用的Shell终端
-u 修改用户账号的ID
-U 解除密码锁定,使密码恢复正常
-Z 设置用户账号的SELinux映射用户
参考示例
修改指定用户的家目录路径: [root@linuxcool ~]# usermod -d /home linuxprobe
修改指定用户的UID号码: [root@linuxcool ~]# usermod -u 6688 linuxprobe
修改指定用户的名称为linuxcool: [root@linuxcool ~]# usermod -l linuxcool linuxprobe
锁定指定用户的账户,临时不允许登录系统: [root@linuxcool ~]# usermod -L linuxcool
解锁指定用户的账户,再次允许登录系统: [root@linuxcool ~]# usermod -U linuxcool
----------------------------------------------------------------
groupmod
(英文全拼: group modify)
命令用于 更改群组属性
groupmod命令来自英文词组“group modify”的缩写,
其功能是用于更改群组属性。
Linux系统中的群组信息一般不建议更改,因为涉及已加入用户的归属问题,
尤其是群组名称、组GID,一定要确认好后再操作。
语法格式:groupmod 参数 群组名
常用参数:
-g 设置群组识别码
-h 显示帮助信息
-n 设置群组名称
-o 允许重复使用群组识别码
-p 设置群组密码
参考示例
更改指定用户组的名称(原名linuxprobe): [root@linuxcool ~]# groupmod -n linuxcool linuxprobe
更改指定用户组的识别码: [root@linuxcool ~]# groupmod -g 8888 linuxcool
----------------------------------------------------------------
groupdel
(英文全拼: delete a group)
命令用于 删除用户组
groupdel命令来自英文词组“delete a group”的缩写,
其功能是用于删除用户组。
Linux系统中的用户组信息被保存在/ect/group和/ect/gshadow文件中,
手动删除对应信息即可,亦可以用groupdel命令删除。
语法格式:groupdel [参数] 群组名
常用参数:
-f 强制删除而不询问
-h 显示帮助信息
参考实例
删除指定名称的用户组: [root@linuxcool ~]# groupdel linuxcool
强制删除指定名称的用户组: [root@linuxcool ~]# groupdel -f linuxcool
----------------------------------------------------------------
chmod
(英文全拼: change mode)
命令用于 改变文件或目录权限
chmod命令来自英文词组“change mode”的缩写,
其功能是用于改变文件或目录权限的命令。
默认只有文件的所有者和管理员可以设置文件权限,
普通用户只能管理自己文件的权限属性。
设置权限时可以使用数字法,亦可使用字母表达式,
对于目录文件建议加入-R参数进行递归操作,
意味着不仅对于目录本身,也对目录内的子文件/目录都进行新权限的设定。
语法格式:chmod 参数 文件名
常用参数:
-c 改变文件权限成功后再输出成功信息
-f 改变文件权限失败后不显示错误信息
-R 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--no-preserve-root 不特殊对待根目录
--preserve-root 禁止对根目录进行递归操作
--reference 使用指定参考文件的权限
--version 显示版本信息
参考示例
设定某个文件的权限为775: [root@linuxcool ~]# chmod 775 File.cfg
设定某个文件让任何人都可以读取: [root@linuxcool ~]# chmod a+r File.cfg
设定某个目录及其内子文件任何人都可以读取和读取: [root@linuxcool ~]# chmod -R a+r Dir
设定某个二进制命令文件上新增SUID特殊权限位: [root@linuxcool ~]# chmod u+s /sbin/reboot
第一种方式
chmod [{ugoa}{+-=}{rwx}] 文件或目录
第二种方式
chmod [mode=421] [文件或目录]
chmod 777 文件名
chmod 644 文件名
r=4
w=2
x=1
1 - x - 001
2 - w - 010
3 - wx - 011
4 - r - 100
5 - rx - 101
6 - rw - 110
7 - rwx - 111
----------------------------------------------------------------
chown
(英文全拼: change owner)
命令用于 改变文件或目录的用户和用户组
chown命令来自英文词组“change owner”的缩写,
其功能是用于改变文件或目录的用户和用户组信息。
管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息。
语法格式:chown [参数] 所属主:所属组 文件名
常用参数:
-c 显示所属变更信息
-f 若该文件拥有者无法被更改也不显示错误
-h 仅对链接文件进行更改,而非真正指向的文件
-P 不遍历任何符号链接
-R 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--no-preserve-root 不特殊对待根目录
--preserve-root 不允许在根目录上执行递归操作
--version 显示版本信息
参考示例
改变指定文件的所属主与所属组: [root@linuxcool ~]# chown root:root File.txt
改变指定文件的所属主与所属组,并显示过程: [root@linuxcool ~]# chown -c linuxprobe:linuxprobe /Dir
changed ownership of '/Dir' from root:root to linuxprobe:linuxprobe
改变指定目录及其内所有子文件的所属主与所属组: [root@linuxcool ~]# chown -R root:root /Dir
----------------------------------------------------------------
chgrp
(英文全拼: change group)
命令用于 更改文件所属用户组
chgrp命令来自英文词组”change group“的缩写,
其功能是用于更改文件所属用户组。
Linux系统中常用chown命令更改文件所属用户及用户组身份信息,
如仅需要修改文件所属用户组身份信息,则可以使用chgrp命令更快地完成。
语法格式:chgrp [参数] 目录名
常用参数:
-c 显示调试信息
-f 不显示错误信息
-h 对符号链接文件做修改
-L 遍历每个符号链接
-P 不遍历每个符号链接
-R 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--vesion 显示版本信息
参考示例
更改目录所属用户组为新的指定身份信息: [root@linuxcool ~]# chgrp linuxcool Dir
更改目录所属用户组为新的指定身份信息,并显示过程: [root@linuxcool ~]# chgrp -v linuxcool Dir
changed group of 'Dir' from root to linuxcool
更改目录及其下所有文件的所属用户组为新的指定身份信息: [root@linuxcool ~]# chgrp -R linuxcool Dir
----------------------------------------------------------------
find
命令用于 根据路径和条件搜索指定文件(查找文件或目录)
find命令的功能是用于根据给定的路径和条件查找相关文件或目录,
参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,
是Linux系统运维人员日常工作必须掌握的命令之一。
find命令通常进行的是从根目录(/)开始的全盘搜索,
有别于whereis、which、locate……等的有条件或部分文件的搜索。
对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,
会相对消耗较多的系统资源。
语法格式:find [路径] [条件] 文件名
常用参数:
-name 匹配文件名
-perm 匹配文件权限
-user 匹配文件所属主
-group 匹配文件所属组
-mtime 匹配最后修改文件内容时间
-atime 匹配最后读取文件内容时间
-ctime 匹配最后修改文件属性时间
-nouser 匹配无所属主的文件
-nogroup 匹配无所属组的文件
-newer 匹配比指定文件更新的文件
-type 匹配文件类型
-size 匹配文件大小
-prune 不搜索指定目录
-exec …… {}\; 进一步处理搜索结果
参考示例
全盘搜索系统中所有以.conf结尾的文件: [root@linuxcool ~]# find / -name *.conf
在/etc目录中搜索所有大于1M大小的文件: [root@linuxcool ~]# find /etc -size +1M
b - 块(512字节)
c - 字节
w - 字(2字节)
k - 千字节
M - 兆字节
G - 吉字节
在/home目录中搜索所有属于指定用户的文件: [root@linuxcool ~]# find /home -user linuxprobe
列出当前工作目录中的所有文件、目录以及子文件信息: [root@linuxcool ~]# find .
在/var/log目录下搜索所有指定后缀的文件,后缀不需要大小写。 [root@linuxcool ~]# find /var/log -iname "*.log"
在/var/log目录下搜索所有不是以.log结尾的文件: [root@linuxcool ~]# find /var/log ! -name "*.log"
搜索当前工作目录中的所有近7天被修改过的文件: [root@linuxcool ~]# find . -mtime +7
全盘搜索系统中所有类型为目录,且权限为1777的目录文件: [root@linuxcool ~]# find / -type d -perm 1777
全盘搜索系统中所有类型为普通文件,且可以执行的文件信息: [root@linuxcool ~]# find / -type f -perm /a=x
全盘搜索系统中所有后缀为.mp4的文件,并删除所有查找到的文件: [root@linuxcool ~]# find / -name "*.mp4" -exec rm -rf {} \;
----------------------------------------------------------------
locate
命令用于 快速查找文件或目录(快速定位文件路径)
locate命令的功能是用于快速查找文件或目录。
与find命令进行全局搜索不同,
locate命令是基于了数据文件(/var/lib/locatedb)进行的定点查找,
由于缩小了搜索范围,因此快速快很多。
Linux系统需定期执行下updatedb命令对数据库文件进行更新,
然后再使用locate命令进行查找,这样才会更加准确。
语法格式:locate [参数] 文件名
常用参数:
-b 仅匹配文件名
-c 不输出文件名
-d 设置数据库所在目录
-i 忽略大小写
-l 限制最大查找数量
-q 静默执行模式
-r 使用正则表达式
-S 显示数据库的统计信息
-w 匹配完整的文件路径
--help 显示帮助信息
--version 显示版本信息
参考示例
搜索带有指定关键词的文件: [root@linuxcool ~]# locate network
在指定的目录下,搜索带有指定关键词的文件: [root@linuxcool ~]# locate /etc/network
----------------------------------------------------------------
which
命令用于 查找命令文件
which命令的功能是用于查找命令文件,能够快速搜索二进制程序所对应的位置。
如果我们既不关心同名文件(find与locate),
也不关心命令所对应的源代码和帮助文件(whereis),
仅仅是想找到命令本身所在的路径,那么这个which命令就太合适了。
语法格式:which [参数] 文件名
常用参数:
-a 显示PATH变量中所有匹配的可执行文件
-n 设置文件名长度(不含路径)
-p 设置文件名长度(含路径)
-V 显示版本信息
-w 设置输出时栏位的宽度
--help 显示帮助信息
--read-functions 从标准输入中读取Shell函数定义
--show-tilde 使用波浪线代替路径中的家目录
--skip-dot 跳过PATH变量中以点号开头的目录
参考示例
查找某个指定命令文件所在位置: [root@linuxcool ~]# which reboot
查找多个指定命令文件所在位置: [root@linuxcool ~]# which shutdown poweroff
----------------------------------------------------------------
whereis
(英文全拼: Where is)
命令用于 显示命令及相关文件的路径位置
whereis命令来自英文词组“Where is”的拼写,
其功能是用于显示命令及相关文件的路径位置信息,
能够找到命令(二进制程序)、命令源代码、man帮助手册等相关的文件路径位置信息,
帮助我们更好地管理这些文件。
有别于find命令进行的全盘搜索,whereis命令查找速度非常快,
因为它不是在磁盘中乱找,而是在指定数据库中查询,
该数据库是Linux系统自动创建的,包含有本地所有文件的信息,
每天自动更新一次。
但正因为这样,whereis命令的搜索结果会不及时,
比如刚添加的文件可能搜不到,原因就是该数据库文件没有被更新,
管理人员则手动执行updatedb命令进行更新即可。
语法格式:whereis [参数] 命令名
常用参数:
-b 查找二进制程序或命令文件
-m 查找man帮助手册文件
-s 仅查找源代码文件
-u 查找可执行文件、源代码及帮助文档
参考示例
查找指定命令程序及相关文件所在位置: [root@linuxcool ~]# whereis poweroff
仅查找指定命令程序文件所在位置: [root@linuxcool ~]# whereis -b poweroff
仅查找指定命令的帮助文件所在位置: [root@linuxcool ~]# whereis -m poweroff
----------------------------------------------------------------
grep
(英文全拼: global search regular expression and print out the line)
命令用于 文本搜索工具
grep来自英文词组“global search regular expression and print out the line”的缩写,
意思是用于全面搜索的正则表达式,并将结果输出。
人们通常会将grep命令与正则表达式搭配使用,
参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活。
与之容易混淆的是egrep命令和fgrep命令。
如果把grep命令当作是标准搜索命令,那么egrep则是扩展搜索命令,
等价于“grep -E”命令,支持扩展的正则表达式。
而fgrep则是快速搜索命令,等价于“grep -F”命令,不支持正则表达式,
直接按照字符串内容进行匹配。
语法格式:grep [参数] 文件名
常用参数:
-b 显示匹配行距文件头部的偏移量
-c 只显示匹配的行数
-E 支持扩展正则表达式
-F 匹配固定字符串的内容
-h 搜索多文件时不显示文件名
-i 忽略关键词大小写
-l 只显示符合匹配条件的文件名
-n 显示所有匹配行及其行号
-o 显示匹配词距文件头部的偏移量
-q 静默执行模式
-r 递归搜索模式
-s 不显示没有匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 精准匹配整词
-x 精准匹配整行
参考示例
搜索指定文件中包含某个关键词的内容行: [root@linuxcool ~]# grep root /etc/passwd
搜索指定文件中以某个关键词开头的内容行: [root@linuxcool ~]# grep ^root /etc/passwd
搜索多个文件中包含某个关键词的内容行: [root@linuxcool ~]# grep linuxprobe /etc/passwd /etc/shadow
搜索多个文件中,包含某个关键词的内容,不显示文件名称: [root@linuxcool ~]# grep -h linuxprobe /etc/passwd /etc/shadow
显示指定文件中包含某个关键词行的数量: [root@linuxcool ~]# grep -c root /etc/passwd /etc/shadow
搜索指定文件中包含某个关键词位置的行号及内容行: [root@linuxcool ~]# grep -n network anaconda-ks.cfg
搜索指定文件中不包含某个关键词的内容行: [root@linuxcool ~]# grep -v nologin /etc/passwd
搜索当前工作目录中包含某个关键词内容的文件,未找到则提示: [root@linuxcool ~]# grep -l root *
搜索当前工作目录中包含某个关键词内容的文件,未找到不提示: [root@linuxcool ~]# grep -sl root *
不仅搜索指定目录,还搜索其内子目录内是否有关键词文件: [root@linuxcool ~]# grep -srl root /etc
搜索指定文件中精准匹配到某个关键词的内容行: [root@linuxcool ~]# grep -x cd anaconda-ks.cfg
[root@linuxcool ~]# grep -x cdrom anaconda-ks.cfg
cdrom
判断指定文件中是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含): [root@linuxcool ~]# grep -q linuxprobe anaconda-ks.cfg
[root@linuxcool ~]# echo $?
0
[root@linuxcool ~]# grep -q linuxcool anaconda-ks.cfg
[root@linuxcool ~]# echo $?
1
搜索指定文件中空行的数量: [root@linuxcool ~]# grep -c ^$ anaconda-ks.cfg
6
----------------------------------------------------------------
wc
(英文全拼: Word count)
命令用于 统计文件的字节数、单词数、行数
wc命令来自英文词组“Word count”的缩写,
其功能是用于统计文件的字节数、单词数、行数等信息,
并将统计结果输出到终端界面。
利用wc命令可以很快的计算出准确的单词数及行数,
评估出文本的内容长度,要想了解一个文件,不妨先wc一下吧~
语法格式:wc [参数] 文件名
常用参数:
-c 统计字节数
-l 统计行数
-L 设置最长行的长度
-m 统计字符数
-w 统计单词数
--help 显示帮助信息
--version 显示版本信息
参考示例
统计指定文件的单词数量: [root@linuxcool ~]# wc -w File.cfg
117 File.cfg
统计指定文件的字节数量: [root@linuxcool ~]# wc -c File.cfg
1256 File.cfg
统计指定文件的字符数量: [root@linuxcool ~]# wc -m File.cfg
1256 File.cfg
统计指定文件的总行数: [root@linuxcool ~]# wc -l File.cfg
43 File.cfg
----------------------------------------------------------------
gzip
(英文全拼: gunzip)
命令用于 压缩和解压文件
gzip命令来自英文单词gunzip的缩写,其功能是用于压缩和解压文件。
gzip是一款使用广泛的压缩工具,文件经过压缩后一般会以.gz后缀结尾,
与tar命令合用后即为.tar.gz后缀。
据统计,gzip命令对文本文件的压缩比率通常能达到60%~70%,
压缩后可以很好地提升存储空间的使用率,还能够在网络传输文件时减少等待时间。
语法格式:gzip [参数] 文件名
常用参数:
-a 使用ASCII文本模式
-c 把压缩后的文件输出到标准输出设备
-d 解压指定压缩包文件
-f 强行压缩文件而不询问
-h 显示帮助信息
-k 保留原文件
-l 显示压缩包内的文件信息
-L 显示版权信息
-n 不保存原来的文件名及时间戳
-N 保存原来的文件名及时间戳
-t 测试压缩包是否正确无误
-q 静默执行模式
-r 递归处理所有子文件
-S 设置解压或压缩后文件的后缀名
-v 显示执行过程详细信息
-V 显示版本信息
参考示例
将指定的文件进行压缩,压缩包默认会以“原文件名.gz”保存到当前工作目录下,原文件会被自动删除: [root@linuxcool ~]# gzip File.cfg
解压指定的压缩包文件并显示解压过程,解压后的文件会保存在当前工作目录下,压缩包会被自动删除: [root@linuxcool ~]# gzip -dv File.cfg.gz
将指定的文件进行压缩,但是不删除原文件: [root@linuxcool ~]# gzip -k File.cfg
显示指定文件的压缩信息: [root@linuxcool ~]# gzip -l File.cfg.gz
----------------------------------------------------------------
gunzip
(英文全拼: Gnu unzip)
命令用于 解压提取文件内容
gunzip命令来自英文词组“Gnu unzip”的缩写,其功能是用于解压提取文件内容。
gunzip通常被用来解压那些被基于gzip格式压缩过的文件,也就是那些.gz结尾的压缩包。
语法格式:gunzip [参数] 压缩包
常用参数:
-a 使用ASCII文本模式
-c 将解压后的文件输出到标准输出设备
-f 强制解压文件而不询问
-h 显示帮助信息
-l 显示压缩文件的相关信息
-n 解压时不保留原文件的名称及时间戳
-N 解压时保留原文件的名称及时间戳
-q 静默执行模式
-r 递归处理所有子文件
-S 设置压缩字尾字符串
-t 测试压缩包的完整性
-v 显示执行过程详细信息
-V 显示版本信息
参考示例
解压指定的压缩包文件: [root@linuxcool ~]# gunzip File.gz
解压指定的压缩包文件,并输出解压过程: [root@linuxcool ~]# gunzip -v File.gz
测试指定的压缩包文件内容是否损坏,能够正常解压: [root@linuxcool ~]# gunzip -t File.gz
----------------------------------------------------------------
zip
命令用于 压缩文件(压缩文件和目录)
zip命令的功能是用于压缩文件,解压命令为unzip。
通过zip命令可以将文件打包成.zip格式的压缩包,
里面会包含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。
语法格式:zip 参数 目标文件.zip 源文件或目录名
常用参数:
-A 自动解压缩文件
-b 设置暂存文件的目录
-c 添加注释信息到压缩文件
-d 更新压缩包内文件
-F 尝试修复损坏的压缩文件
-h 显示帮助信息
-i 仅压缩符合条件的文件
-k 使用MS-DOS兼容格式
-l 将“LF”替换成“LF+CR”字符
-L 显示版本信息
-m 压缩后删除源文件
-n 不压缩具有特定字符串的文件
-q 静默执行模式
-r 递归处理所有子文件
-S 包含系统和隐藏文件
-t 设置压缩时间为指定日期
-T 检查压缩文件是否正确无误
-v 显示执行过程详细信息
-V 保留VMS操作系统的文件属性
-w 在文件名称中加入版本编号
-X 不保留过多的文件属性信息
-y 直接保存符号链接,而不是对应文件
参考示例
将指定目录及其内全部文件都打包成zip格式压缩包文件: [root@linuxcool ~]# zip -r File.zip /etc
将当前工作目录内所有以.cfg为后缀的文件打包: [root@linuxcool ~]# zip -r File.zip *.cfg
更新压缩包文件中某个文件: [root@linuxcool ~]# zip -dv File.zip File.cfg
----------------------------------------------------------------
unzip
命令用于 解压缩zip格式文件
unzip命令用于解压缩zip格式文件,
虽然Linux系统中更多地使用tar命令进行对压缩包的管理操作,
但有时也会收到Windows系统常用的.zip和.rar格式的压缩包文件,
unzip命令便派上了用场。
直接使用unzip命令解压缩文件后,
压缩包内原有的文件会被提取并输出保存到当前工作目录下。
语法格式:unzip [参数] 压缩包名
常用参数:
-a 对文本进行必要的字符转换
-b 不要对文本进行任何字符转换
-c 适当转换字符后输出解压缩结果
-C 严格区分大小写
-d 解压缩文件到指定目录中
-f 强制覆盖已有文件
-j 不处理压缩文件中原有的目录路径
-l 显示压缩包内文件列表
-L 将压缩包内文件名改为小写
-n 解压缩时不覆盖已有文件
-p 使用密码加密
-q 静默执行模式
-t 检查压缩包完整性
-v 显示执行过程详细信息
-x 跳过压缩包内的指定文件
-z 显示压缩包内的备注文字
参考示例
将压缩包文件解压到当前工作目录中: [root@linuxcool ~]# unzip File.zip
将压缩包文件解压到指定目录中: [root@linuxcool ~]# unzip File.zip -d /home
测试压缩包文件是否完整,文件有无损坏: [root@linuxcool ~]# unzip -t File.zip
----------------------------------------------------------------
tar
命令用于 压缩和解压缩文件
tar命令的功能是用于压缩和解压缩文件,
能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。
对于RHEL7、CentOS7版本以后的系统,解压缩时可以不添加格式参数(如z或j),
系统也能自动进行分析并解压。
把要传输的文件先进行压缩再进行传输,能够很好地提高工作效率,方便分享。
语法格式:tar 参数 压缩包名 [文件或目录名]
常用参数:
-A 添加文件到已存在的压缩包
-B 设置区块大小
-c 创建新的压缩包
-C 解压缩到指定目录
-d 记录文件的差别
-f 指定压缩包文件名
-j 使用bzip2压缩格式
-l 设置文件系统边界
-m 保护文件不被覆盖
-N 只将较新日期的文件保存到压缩包中
-p 保留原来的文件权限与属性
-P 使用绝对路径
-t 显示压缩包的内容
-u 更新压缩包内的文件
-v 显示执行过程详细信息
-w 确认压缩包的完整性
-x 从压缩包内提取文件
-z 使用gzip压缩格式
--exclude 排除指定的文件不压缩
--remove-files 操作完成后删除源文件
参考示例
使用gzip压缩格式对指定目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.gz: [root@linuxcool ~]# tar czvf File.tar.gz /etc
使用bzip2压缩格式对某个目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.bz2: [root@linuxcool ~]# tar cjvf File.tar.bz2 /etc
将当前工作目录内所有以.cfg为后缀的文件打包,不进行压缩: [root@linuxcool ~]# tar cvf File.tar *.cfg
将当前工作目录内的所有以.cfg为后缀的文件打包,不进行压缩,并删除原始文件: [root@linuxcool ~]# tar cvf File.tar *.cfg --remove-files
解压指定压缩包到当前工作目录: [root@linuxcool ~]# tar xvf File.tar
解压指定压缩包到/etc目录: [root@linuxcool ~]# tar xvf File.tar -C /etc
查看某个压缩包内文件信息(无需解压): [root@linuxcool ~]# tar tvf File.tar
----------------------------------------------------------------
du
(英文全拼: Disk Usage)
命令用于 查看文件或目录的大小
du命令来自英文词组“Disk Usage”的缩写,其功能是用于查看文件或目录的大小。
人们经常会把df和du命令混淆,df是用于查看磁盘或分区使用情况的命令,
而du命令则是用于按照指定容量单位来查看文件或目录在磁盘中的占用情况。
语法格式:du [参数] 文件名
常用参数:
-a 显示目录中所有文件大小
-b 使用Byte为单位显示文件大小
-c 显示占用磁盘空间大小总和
-D 显示符号链接对应源文件大小
-g 使用GB为单位显示文件大小
-h 使用易读方式显示文件大小
-k 使用KB为单位显示文件大小
-m 使用MB为单位显示文件大小
-P 不显示符号链接对应源文件大小
-s 显示子目录总大小
-S 不显示子目录大小
-X 排除指定文件
--max-depth=n 指定统计子目录的深度为第n层
--help 显示帮助信息
--version 显示版本信息
参考示例
以易读的容量格式显示指定目录内各个文件的大小信息: [root@linuxcool ~]# du -h /etc
28K /etc/dnf/modules.d
20K /etc/dnf/plugins
12K /etc/dnf/protected.d
以易读的容量格式显示指定目录内总文件的大小信息: [root@linuxcool ~]# du -sh /Dir
29M /Dir
显示指定文件的大小信息(默认单位为K): [root@linuxcool ~]# du File.cfg
4 File.cfg
----------------------------------------------------------------
tree
命令用于 以树状图形式列出目录内容
tree命令的功能是用于以树状图形式列出目录内容,
帮助运维人员快速了解到目录的层级关系。
语法格式:tree [参数]
常用参数:
-a 显示所有文件和目录
-A 使用ASNI绘图字符形式
-C 使用彩色显示
-d 仅显示目录名
-D 显示文件更改时间
-f 显示完整的相对路径名
-F 显示每个文件的完整路径
-g 显示文件所属组名
-G 显示组名或GID
-H 以更易读的格式输出信息
-i 不使用阶梯状显示文件或目录名
-I 不显示符合范本样式的文件或目录名
-l 直接显示链接文件所指向的原始目录
-L 使用层级显示内容
-n 不在文件和目录清单上加色彩
-N 直接显示文件和目录名(可显示中文)
-o 写入到指定文件
-p 显示权限标示
-P 仅显示符合范本样式的文件或目录名
-q 用“?”号替代控制字符,显示文件和目录名
-s 显示文件或目录大小
-t 依据文件更改时间排序
-T 设置标题和字符串
-u 显示文件或目录的所有者名
-x 将范围局限在现行的文件系统中
--help 显示帮助信息
--version 显示版本信息
参考示例
显示当前工作目录下的文件层级情况: [root@linuxcool ~]# tree
以文件和目录的更改时间进行排序: [root@linuxcool ~]# tree -t
以带有相对路径的形式,显示当前工作目录下的文件层级情况: [root@linuxcool ~]# tree -f
只显示目录的层级关系情况: [root@linuxcool ~]# tree -d
----------------------------------------------------------------
df
(英文全拼: report file system disk space usage)
命令用于 显示磁盘空间使用量情况
df命令来自英文词组“report file system disk space usage”的缩写,
其功能是用于显示系统上磁盘空间的使用量情况。
df命令显示的磁盘使用量情况含可用、已有及使用率等信息,
默认单位为Kb,建议使用-h参数进行单位换算,
毕竟135M比138240Kb更利于阅读对吧~
语法格式:df 参数 [对象磁盘/分区]
常用参数:
-a 显示所有文件系统
-h 以更易读的方式显示
-H 以1KB=1000Byte为换算单位
-i 显示索引字节信息
-k 设置显示时的块大小
-l 只显示本地文件系统
-t 只显示指定类型文件系统
-T 显示文件系统的类型
--sync 在获取磁盘使用信息前先执行sync同步命令
参考示例
带容量单位的显示系统全部磁盘使用量情况: [root@linuxcool ~]# df -h
带容量单位的显示指定磁盘分区使用量情况: [root@linuxcool ~]# df -h /boot
显示系统中所有文件系统格式为XFS的磁盘分区使用量情况: [root@linuxcool ~]# df -t xfs
----------------------------------------------------------------
free
命令用于 显示系统内存使用量情况
free命令的功能是显示系统内存使用量情况,
包含物理和交换内存的总量、使用量和空闲量情况。
语法格式:free [参数]
常用参数:
-b 设置显示单位为Byte
-g 设置显示单位为GB
-h 自动调整合适的显示单位
-k 设置显示单位为KB
-l 显示低内存和高内存统计数据
-m 设置显示单位为MB
-o 不显示缓冲区数据列
-s 持续显示内存数据
-t 显示内存使用总合
-V 显示版本信息
参考示例
以默认的容量单位显示内存使用量信息: [root@linuxcool ~]# free
以MB位单位显示内存使用量信息: [root@linuxcool ~]# free -m
以易读的单位显示内存使用量信息: [root@linuxcool ~]# free -h
以易读的单位显示内存使用量信息,每个10秒刷新一次: [root@linuxcool ~]# free -hs 10
----------------------------------------------------------------
lsblk
(英文全拼: list block devices)
命令用于 查看系统的磁盘使用情况(查看设备挂载情况)
lsblk命令来自英文词组“list block devices”的缩写,
其功能是用于查看系统的磁盘使用情况。
语法格式:lsblk [参数]
常用参数:
-a 显示所有设备信息
-b 显示以字节为单位的设备大小
-e 排除指定设备
-f 显示文件系统信息
-h 显示帮助信息
-i 仅使用字符
-l 使用列表格式显示
-m 显示权限信息
-n 不显示标题
-o 输出列信息
-P 使用“key=value”格式显示信息
-r 使用原始格式显示信息
-t 显示拓扑结构信息
-V 显示版本信息
参考示例
显示系统中所有磁盘设备的使用情况信息: [root@linuxcool ~]# lsblk -a
显示系统中磁盘设备的归属及权限信息: [root@linuxcool ~]# lsblk -m
显示系统中所有SCSI类型的磁盘设备信息: [root@linuxcool ~]# lsblk -S
以列表格式显示磁盘设备信息,并且不显示标题: [root@linuxcool ~]# lsblk -nl
----------------------------------------------------------------
mount
命令用于 将文件系统挂载到目录
mount命令的功能是用于将文件系统挂载到目录,
文件系统指的是被格式化过的硬盘或分区设备,
进行挂载操作后,用户便可以在挂载目录中使用硬盘资源了。
挂载操作会使得原有目录中文件被隐藏,
因此根目录以及系统原有目录都不要作为挂载点,
会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
默认情况下Linux系统并不会像Windows系统那样自动地挂载光盘和U盘设备,
需要自行完成。
语法格式:mount [参数] [设备名] [目录名]
常用参数:
-a 加载“/etc/fstab”文件中记录的所有文件系统
-F 为每个设备创建出一个新的挂载版本
-h 显示帮助信息
-l 显示已加载的文件系统列表
-L 挂载具有指定标签的分区
-n 加载没有写入“/etc/mtab”文件中的文件系统
-r 将文件系统设置为只读模式
-t 挂载指定文件类型的设备分区
通常不必指定。mount 会自动选择正确的类型。常用类型有:
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Windows网络文件共享:smbfs (默认的windows系统都支持的)
windows网络共享文件:cifs (cifs是smbfs的升级版,默认的windows系统都支持的,首先推荐)
光盘或光盘镜像:iso9660
UNIX(LINUX) 文件网络共享:nfs
-U 挂载指定UUID的设备分区
-V 显示版本信息
-w 以读写方式挂载文件系统
参考示例
查看当前系统中已有的文件系统信息: [root@linuxcool ~]# mount
挂载/etc/fstab文件中所有已定义的设备文件: [root@linuxcool ~]# mount -a
将光盘设备挂载到指定目录: [root@linuxcool ~]# mount /dev/cdrom /Dir
强制以xfs文件系统挂载硬盘设备到指定目录: [root@linuxcool ~]# mount -t xfs /dev/sdb /Dir
----------------------------------------------------------------
umount
(英文全拼: unmount)
命令用于 卸载文件系统
umount命令来自英文单词“unmount”的缩写,其功能是用于卸载文件系统。
与mount挂载命令需要同时提供设备名与挂载目录不同,
umount卸载命令只需要提供设备名或挂载目录之一即可。
语法格式:umount [参数] 设备或目录名
常用参数:
-a 卸载“/etc/mtab”文件中记录的所有设备
-F 强制卸载设备而不询问
-h 显示帮助信息
-n 卸载时不要将信息写入“/etc/mtab”文件中
-r 使用只读方式重新挂载文件系统
-t 仅卸载指定的文件系统
-v 显示执行过程详细信息
-V 显示版本信息
参考示例
卸载指定的文件系统: [root@linuxcool ~]# umount /dev/sdb
卸载指定的文件系统并显示过程: [root@linuxcool ~]# umount -v /dev/cdrom
----------------------------------------------------------------
fsck
(英文全拼: filesystem check)
命令用于 检查与修复文件系统
fsck命令来自英文词组“filesystem check”的缩写,
其功能是用于检查与修复文件系统。
若系统有过突然断电或磁盘异常的情况,
建议使用fsck命令对文件系统进行检查与修复,以防数据丢失。
语法格式:fsck [参数] 设备名
常用参数:
-a 自动修复文件系统
-C 显示进度条
-f 强制检查而不询问
-M 不检查正在使用的文件系统
-n 不进行修复操作
-N 不实际执行操作,仅模拟输出结果
-r 使用互动模式,在执行修复前询问用户是否确认
-R 忽略指定的文件系统不予检查
-t 设置要检查的文件系统类型
-T 不显示标题信息
-V 显示执行过程详细信息
-y 始终尝试修复操作
参考示例
检查是否的文件系统是否有损坏: [root@linuxcool ~]# fsck /dev/sdb
强制检查文件系统的损坏情况: [root@linuxcool ~]# fsck -f /dev/sdb
----------------------------------------------------------------
restore
命令用于 还原备份
restore命令用来还原由dump操作所备份下来的文件或整个文件系统(一个分区)。
语法格式:restore [参数] [文件]
常用参数:
-b 设置区块大小,单位是Byte
-c 不检查dump操作的备份格式,仅准许读取使用旧格式的备份文件
-C 使用对比模式,将备份的文件与现行的文件相互对比
-D 允许用户指定文件系统的名称
-f <备份文件> 从指定的文件中读取备份数据,进行还原操作
-h 仅解出目录而不包括与该目录相关的所有文件
-i 使用互动模式,在进行还原操作时,restore指令将依序询问用户
-m 解开符合指定的inode编号的文件或目录而非采用文件名称指定
-r 进行还原操作
-R 全面还原文件系统时,检查应从何处开始进行
-s 当备份数据超过一卷磁带时,您可以指定备份文件的编号
-t 指定文件名称,若该文件已存在备份文件中,则列出它们的名称
-v 显示指令执行过程
-x 设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内
-y 不询问任何问题,一律以同意回答并继续执行指令
参考实例
使用已执行的转储来执行完全重建: [root@linuxcool ~]# restore -rf /dev/nst0
仅从磁带备份中提取 /etc 目录: [root@linuxcool ~]# restore -xf /dev/nst0 /etc
交互式还原: [root@linuxcool ~]# restore -if /dev/nst0
完全重建是一律同意执行: [root@linuxcool ~]# restore -rfy /dev/nst0
----------------------------------------------------------------
fdisk
(英文全拼: Partition table manipulator for Linux)
命令用于 管理磁盘分区
fdisk命令来自英文词组“Partition table manipulator for Linux”的缩写,
其功能是用于管理磁盘的分区信息。
如果一套几百平米的房子内部没有墙壁,虽然看起来会很敞亮,
但是各种声音、气味、物品会随意充斥在整个房子内,让人极不舒适,
因此需要用墙壁按照功能进行划分,例如卧室、厕所、厨房、阳台等等。
fdisk命令可以用于对磁盘进行分区操作,
用户可以根据实际情况进行合理划分,这样后期挂载和使用时会方便很多。
语法格式:fdisk [参数] [设备名]
常用参数:
-b 设置每个分区的大小
-c 关闭DOS兼容模式
-C 设置硬盘的柱面数量
-h 显示帮助信息
-H 设置硬盘的磁头数
-l 显示指定的外围设备分区表状态
-s 显示指定的分区大小
-S 设置每个磁道的扇区数
-u 以分区数目代替柱面数目
-v 显示版本信息
参考示例
查看当前系统的分区情况: [root@linuxcool ~]# fdisk -l
管理指定硬盘的分区(过程省略,以《Linux就该这么学》第6章节为准): [root@linuxcool ~]# fdisk /dev/sda
实例
[root@hadoop100 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x73743717 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag 活动分区标记/引导分区
b edit bsd disklabel 编辑 bsd 磁盘标签
c toggle the dos compatibility flag 设置 DOS 操作系统兼容标记
d delete a partition 删除分区
g create a new empty GPT partition table 创建新的空GPT分区表
G create an IRIX (SGI) partition table 创建IRIX(SGI)分区表
l list known partition types 显示分区类型
m print this menu 显示菜单和帮助信息
n add a new partition 新建分区
o create a new empty DOS partition table 建立空白 DOS 分区表
p print the partition table 显示分区信息
q quit without saving changes 退出不保存
s create a new empty Sun disklabel 新建空白 SUN 磁盘标签
t change a partition's system id 设置分区号
u change display/entry units 改变显示记录单位
v verify the partition table 进行分区检查
w write table to disk and exit 保存修改
x extra functionality (experts only) 扩展应用,高级功能
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x73743717
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):n
Partition type: 分区类型
p primary (0 primary, 0 extended, 4 free) 主分区(0 主要, 0 扩展, 4 自由)
e extended 扩展
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048): 起始位置
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 结束位置
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x73743717
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 91cfe053-f205-401f-8210-a85f047a8caf /boot
└─sda2 LVM2_member cYEcqo-6l4k-Jch5-uflb-38xM-98ay-y1ST3a
├─centos-root xfs e05a4972-93d5-4ac4-94d9-d4a6f7b9456d /
├─centos-swap swap 0b6e5a4d-c886-46de-8ce4-26f257d7272b [SWAP]
└─centos-home xfs 46d42cfa-5e73-450d-9159-cb87b6cc30eb /home
sdb
└─sdb1
sr0
[root@hadoop100 ~]#
----------------------------------------------------------------
mkfs
(英文全拼: make file system)
命令用于 对设备进行格式化文件系统操作
mkfs命令来自英文词组“make file system”的缩写,
其功能是用于对设备进行格式化文件系统操作。
在挂载使用硬盘空间前的最后一步,
运维人员需要对整块硬盘或指定分区进行格式化文件系统操作,
Linux系统支持的文件系统包含ext2、ext3、ext4、xfs、fat、msdos、vfat、minix等多种格式。
语法格式:mkfs [参数] 设备名
常用参数:
-c 检查指定设备是否损坏
-t 设置档案系统的模式
-V 显示执行过程详细信息
--help 显示帮助信息
--version 显示版本信息
参考示例
对指定的硬盘进行格式化文件系统操作: [root@linuxcool ~]# mkfs -t ext4 /dev/sdb
对指定的硬盘进行格式化文件系统操作,并输出详细过程信息: [root@linuxcool ~]# mkfs -V -t xfs /dev/sdb
实例
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 91cfe053-f205-401f-8210-a85f047a8caf /boot
└─sda2 LVM2_member cYEcqo-6l4k-Jch5-uflb-38xM-98ay-y1ST3a
├─centos-root xfs e05a4972-93d5-4ac4-94d9-d4a6f7b9456d /
├─centos-swap swap 0b6e5a4d-c886-46de-8ce4-26f257d7272b [SWAP]
└─centos-home xfs 46d42cfa-5e73-450d-9159-cb87b6cc30eb /home
sdb
└─sdb1
sr0
[root@hadoop100 ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 91cfe053-f205-401f-8210-a85f047a8caf /boot
└─sda2 LVM2_member cYEcqo-6l4k-Jch5-uflb-38xM-98ay-y1ST3a
├─centos-root xfs e05a4972-93d5-4ac4-94d9-d4a6f7b9456d /
├─centos-swap swap 0b6e5a4d-c886-46de-8ce4-26f257d7272b [SWAP]
└─centos-home xfs 46d42cfa-5e73-450d-9159-cb87b6cc30eb /home
sdb
└─sdb1 xfs 8fe71090-7978-47f1-9581-166834ff7189
sr0
[root@hadoop100 ~]#
----------------------------------------------------------------
ps
(英文全称: process)
命令用于 显示进程状态
ps命令来自英文单词“process”的缩写,中文译为“进程”,
其功能是用于显示当前系统的进程状态。
使用ps命令可以查看到进程的所有信息,
例如进程的号码、发起者、系统资源使用占比(处理器与内存)、运行状态等等。
帮助我们及时地发现哪些进程出现“僵死”或“不可中断”等异常情况。
经常会与kill命令搭配使用来中断和删除不必要的服务进程,避免服务器的资源浪费。
ps命令的参数有两种风格,一种是前面有-的,另一种则没有。
有-的是Unix风格,没有的是BSD风格。
语法格式:ps [参数]
常用参数:
a 显示所有进程信息
c 不显示程序路径
d 不显示阶段作业程序
e 显示环境变量信息
f 用ASCII字符显示树状结构
g 显示所有程序及其所属组的程序
h 不显示标题列信息
H 使用树状结构展示程序间的相互关系
j 使用工作控制格式显示程序状态
l 使用详细格式来显示程序状态
L 显示栏位的相关信息
m 显示所有的执行绪
n 使用数字来表示“USER”和“WCHAN”栏位
p 指定程序识别码并显示该程序的状态
r 仅显示终端机正在执行中的程序
s 使用程序信号格式显示程序状态
S 显示包括已中断的子程序状态
t 显示属于指定终端机的程序状态
T 显示当前终端机下的所有程序
u 使用用户为主的格式来显示程序状态
U 显示属于指定用户的程序状态
v 使用虚拟内存的格式显示程序状态
w 使用宽阔的格式来显示程序状态
x 不区分终端机
X 使用旧式登录格式显示程序状态
-e 列出所有进程
-u 列出某个用户关联的所有进程
-f 显示完整格式的进程列表
--cols 设置每列的最大字符数
--headers 重复显示标题列
--help 显示帮助信息
--info 显示排错信息
--lines 设置显示画面的列数
--version 显示版本信息
参考示例
显示系统中全部的进程信息,含详细信息: [root@linuxcool ~]# ps aux
结合输出重定向,将当前进程信息保留备份至指定文件: [root@linuxcool ~]# ps aux > File.txt
结合管道操作符,将当前系统运行状态中指定进程信息过滤出来: [root@linuxcool ~]# ps -ef | grep ssh
结合管道操作符,将当前系统运行状态中指定用户的进程信息过滤出来: [root@linuxcool ~]# ps -u root
结合管道操作符与sort命令,依据处理器使用量(第三列)情况降序排序: [root@linuxcool ~]# ps aux | sort -rnk 3
结合管道操作符与sort命令,依据内存使用量(第四列)情况降序排序: [root@linuxcool ~]# ps aux | sort -rnk 4
实例
一般用法
ps aux | less
ps aux | grep 进程名字
ps -ef | less
官方文档不推荐的用法
ps -aux
使用了 -au 这两个参数后,后面是要筛选用户,
这里 -au 后面跟了个 x,表示筛选用户名字是x的用户;
如果真的有用户叫x,那么筛选的就是这个用户的进程,
如果没有这个用户,ps -aux 命令会被理解成 ps aux
ps aux 显示信息说明
USER 进程是由哪个用户产生的
PID 进程ID号
%CPU 进程占用CPU资源的百分比
%MEM 进程占用内存的百分比
VSZ 进程占用虚拟内存的大小,单位KB
RSS 进程占用实际物理内存的大小,单位KB
TTY 进程是在哪个终端中运行的,对于CentOS来说,
? 与终端无关
tty1 图形化终端
tty2-tty6 本地字符界面终端
pts/0-255 虚拟终端(网络连接)
STAT 进程状态,常见状态有:
D 无法中断的休眠状态(通常IO的进程)
R 运行
S 睡眠
T 暂停
W 进入内存交换(从内核2.6开始无效)
X 死亡进程(少见)
Z 僵尸
< 优先级高的进程
N 优先级低的进程
L 有些页被锁进内存
s 进程的领导者(在它之下有子进程)
l 多进程的(多线程)(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组(前台显示)
START 进程的启动时间
TIME 进程占用CPU的运算时间,不是系统时间
COMMAND 进程启动命令
ps -ef 显示信息说明
UID 进程是由哪个用户产生的
PID 进程ID号
PPID 父程ID号
C 进程占用CPU的百分比
STIME 进程启用到现在的时间
TTY 进程在哪个终端上运行
? 与终端无关
tty1 图形化终端
tty2-tty6 本地字符界面终端
pts/0-255 虚拟终端(网络连接)
TIME 进程实际使用CUP运行的时间
CMD 进程启动命令
----------------------------------------------------------------
kill
命令用于 杀死进程
kill命令的功能是用于杀死(结束)进程,与英文单词的含义相同。
Linux系统中如需结束某个进程,
既可以使用如service或systemctl的管理命令来结束服务,
也可以使用kill命令直接结束进程信息。
如使用kill命令后进程并没有被结束,则可以使用信号9进行强制杀死动作。
语法格式:kill [参数] 进程号
常用参数:
-a 不限制命令名与进程号的对应关系
-l 显示系统支持的信号列表
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
KILL 9 强制终止
TERM 15 终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
-p 不发送任何信号
-s 设置向进程发送的信号
-u 指定用户
参考示例
列出系统支持的全部信号列表: [root@linuxcool ~]# kill -l
结束某个指定的进程(数字为对应的PID值): [root@linuxcool ~]# kill 518
强制结束某个指定的进程(数字为对应的PID值): [root@linuxcool ~]# kill -9 518
----------------------------------------------------------------
killall
(英文全拼: Kill all)
命令用于 基于服务名关闭一组进程
killall命令来自英文词组“Kill all”的拼写,
其功能是用于基于服务名关闭一组进程。
我们常使用kill命令关闭指定PID进程号的服务,
暂且不论要先用ps命令找到对应的进程号才能关闭它,
就说很多服务实际会发起多个进程,对应有数个不同PID进程号,
要用kill命令逐一关闭也是件麻烦事。
而将ps和kill两个命令的执行过程合二为一,就得到了超好用的killall命令。
一个只需要管理员给出要关闭的服务名,
就能自动找到其所对应的全部进程信息,并关闭它们。
语法格式:killall [参数] 服务名
常用参数:
-e 进行精确匹配
-g 杀死进程所属的进程组
-i 杀死进程前询问用户是否确认
-l 显示所有已知信号列表
-o 匹配指定时间前开始的进程
-q 静默执行模式
-r 使用正规表达式匹配要杀死的进程名称
-s 用指定的进程号代替默认信号
-u 杀死指定用户的进程
-v 显示执行过程详细信息
-w 一直等待命令执行完成再退出
-y 匹配指定时间后开始的进程
--help 显示帮助信息
--version 显示版本信息
参考示例
结束指定服务所对应的全部进程: [root@linuxcool ~]# killall httpd
打印所有已知信号列表: [root@linuxcool ~]# killall -l
----------------------------------------------------------------
pstree
(英文全拼: display a tree of processes)
命令用于 以树状图形式显示进程信息
pstree命令来自英文词组“display a tree of processes”的缩写,
其功能是用于以树状图形式显示进程信息,帮助管理员更好地了解进程间的关系。
Linux系统中常用ps命令查看进程状态信息,但是却无法了解进程之间的依赖关系,
哪个是父进程,哪个是子进程?这些信息则可通过pstree命令进行查看。
语法格式: pstree [参数]
常用参数:
-a 显示完整信息
-A 使用ASCII字符绘制树
-c 不使用精简标示法
-g 显示进程组ID
-G 使用VT100终端机的列绘图字符
-h 特别标明现在执行的程序
-I 使用长格式显示树状图
-n 依据PID排序上下级进程
-s 显示指定进程的父进程
-S 显示命名空间转换
-p 显示进程号码
-u 显示用户名
-U 使用UTF-8线条绘制字符
-V 显示版本信息
-Z 显示每个进程的安全上下文
参考示例
以树状图的形式显示当前系统中全部进程(默认): [root@linuxcool ~]# pstree
以树状图的形式显示当前系统中全部进程(带有进程号): [root@linuxcool ~]# pstree -p
以更完整、更丰富的信息样式显示每个进程: [root@linuxcool ~]# pstree -a
----------------------------------------------------------------
top
命令用于 实时显示系统运行状态
top命令的功能是用于实时显示系统运行状态,
包含处理器、内存、服务、进程等重要资源信息。
运维工程师们常常会把top命令比作是“加强版的Windows任务管理器”,
因为除了能看到常规的服务进程信息以外,
还能够对处理器和内存的负载情况一目了然,
实时感知系统全局的运行状态,非常适合作为接手服务器后执行的第一条命令。
语法格式:top [参数] [对象]
常用参数:
-a 按内存使用情况排序
-b 使用批处理模式,不进行交互式显示
-c 使用显示模式
-d 设置显示的更新速度
-h 显示帮助信息
-i 不显示任何闲置或僵死的行程
-M 显示内存单位
-n 设置显示的总次数,完成后自动退出
-p 仅显示指定进程 ID 的信息
-s 使用安全模式,不允许交互式指令
-u 仅显示与指定用户 ID 匹配的进程
-v 使用线程模式
-w 设置显示的宽度
快捷键:
SHIFT+M 按内存占用排序
SHIFT+P 按CPU占用排序
SHIFT+N 按进程ID排序(大到小)
↑↓ 滚动查看
q 退出
u 输入监视的用户(直接回车默认所有用户)
k 根据PID杀死进程,之后输入发送的信号,比如9(也可以直接回车)
参考示例
以默认格式显示系统运行信息: [root@linuxcool ~]# top
以默认格式显示系统运行信息,但提供完整的进程路径及名称: [root@linuxcool ~]# top -c
以批处理模式显示程序信息: [root@linuxcool ~]# top -b
设定每隔5秒刷新一次信息: [root@linuxcool ~]# top -d 5
设定总显示次数为3回,随后自动退出命令: [root@linuxcool ~]# top -n 5
----------------------------------------------------------------
nice
命令用于 调整进程的优先级
nice命令的功能是用于调整进程的优先级,合理分配系统资源。
Linux系统后台工作中某些不重要的进程,
例如定期数据备份、自动清理垃圾等等工作,
我们都可以通过nice命令调低其执行优先级,
慢慢完成不用着急,把硬件资源留给重要的工作。
优先级范围为-20~19,数字越小,优先级越高。
语法格式: nice [参数] 命令或脚本名
常用参数:
-g 匹配进程组ID
-n 设置优先级别
-p 匹配进程ID
-u 匹配用户ID
--help 显示帮助信息
--version 显示版本信息
参考示例
以优先级别为5的方式执行指定脚本: [root@localhost ~]# nice -n -5 ./File.sh
以最高优先级的方式执行指定脚本: [root@localhost ~]# nice -n -20 ./File.sh
----------------------------------------------------------------
netstat
(英文全拼: network statistics)
命令用于 显示网络状态
netstat命令来自英文词组“network statistics”的缩写,
其功能是用于显示各种网络相关信息,
例如网络连接状态、路由表信息、接口状态、NAT、多播成员等等。
netstat命令不仅应用于Linux系统,
而且在Windows XP、Windows 7、Windows 10及Windows 11中均已默认支持,
并且可用参数也相同,有经验的运维人员可以直接上手。
语法格式:netstat [参数]
常用参数:
-a 显示所有连接中的接口信息(显示所有正在监听(listen)和未监听的套接字(scoket))
-A 设置网络连接类型
-c 持续显示网络状态
-C 显示路由配置信息
-F 显示路由缓存信息
-g 显示多重广播功能群组成员名单
-h 显示帮助信息
-i 显示网络界面信息表单
-l 仅显示正在监听的服务状态
-n 直接使用IP地址,而不是域名
-N 显示网络硬件外围设备的符号链接名称
-o 显示计时器数据信息
-p 显示正在使用接口的程序识别码和名称
-r 显示路由表信息
-s 显示网络工作信息统计表信息
-t 显示TCP传输协议的连线状态
-u 显示UDP传输协议的连线状态
-V 显示版本信息
参考示例
显示系统网络状态中的所有连接信息: [root@linuxcool ~]# netstat -a
显示系统网络状态中的UDP连接信息: [root@linuxcool ~]# netstat -nu
显示系统网络状态中的UDP连接端口号使用信息: [root@linuxcool ~]# netstat -apu
显示网卡当前状态信息: [root@linuxcool~]# netstat -i
显示网络路由表状态信息: [root@linuxcool ~]# netstat -r
找到某个服务所对应的连接信息: [root@linuxcool ~]# netstat -ap | grep ssh
查看该进程网络信息: [root@hadoop100 ~]# netstat -anp | grep 进程号
查看网络端口号占用情况: [root@hadoop100 ~]# netstat -nlp | grep 端口号
实例
[root@hadoop100 ~]# netstat -anp | less
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14142/sshd
Active Internet connections (servers and established)
协议 连接到scoket的用户程序未拷贝的字节数 已发出但远程主机未确认收到的字节数 本地地址 远程地址 连接状态 PID/进程名字
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14142/sshd
0.0.0.0 本地所有地址
127.0.0.1 回环地址
192.168.122.1 本地虚拟网络地址
----------------------------------------------------------------
crontab
(英文全拼: cron table)
命令用于 管理定时计划任务
crontab命令来自英文词组“cron table”的缩写,其功能是管理定时计划任务。
定时计划任务,顾名意思就计划好的任务,到了时间就会自动执行,
在Linux系统中的crond是一个定时计划任务服务,
用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,
那么就会按照预定的周期时间自动地执行下去,而crontab命令则是用于配置的工具名称。
由于定时计划任务非常复杂,本词条仅作简单介绍,
建议阅读书籍《Linux就该这么学》第4章节。
语法格式:crontab [参数] [对象]
常用参数:
-e 编辑任务
进入crontab编辑页面,会打开vim编辑你的工作。
* * * * * 执行的任务
第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表星期日)
* 代表时间
, 代表不连续的时间
- 代表连续的时间范围
*/n 代表每隔多久执行一次
45 22 * * * 命令
每天22点45分执行命令
0 17 * * 1 命令
每周1的17点0分执行命令
0 5 1,15 * * 命令
每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令
每周1到周5凌晨4点40分执行命令
*/10 4 * * * 命令
每天凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令
每月1号和15号,每周1的0点0分都会执行命令。
(注意:星期几和几号最好不要同时出现,
因为他们定义的都是天,非常容易混乱)
-i 删除前询问用户是否确认
-l 显示任务
-r 删除任务
-u 设置用户名
--help 显示帮助信息
参考示例
管理当前用户的计划任务: [root@linuxcool ~]# crontab -e
管理指定用户的计划任务: [root@linuxcool ~]# crontab -e -u linuxprobe
查看当前用户的已有计划任务列表: [root@linuxcool ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf File.tar.gz /Dir/www
----------------------------------------------------------------
rpm
(英文全拼: redhat package manager)
命令用于 RPM软件包管理器
rpm命令来自英文词组“redhat package manager”的缩写,
中文译为“红帽软件包管理器”,
其功能是用于在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作,
常见的例如RHEL、CentOS、Fedora等主流系统都采用这种软件包管理器,
安装软件推荐用固定搭配“rpm -ivh 软件包名”,
而卸载软件则用固定搭配“rpm -evh 软件包名”,简单好记又好用。
语法格式:rpm [参数] 软件包名
常用参数:
-a 显示所有软件包
-c 仅显示组态配置文件
-d 仅显示文本文件
-e 卸载软件包
-f 显示文件或命令属于哪个软件包
-h 安装软件包时显示标记信息
-i 安装软件包
-l 显示软件包的文件列表
-p 显示指定的软件包信息
-q 显示指定软件包是否已安装
-R 显示软件包的依赖关系
-s 显示文件状态信息
-U 升级软件包
-v 显示执行过程信息
-vv 显示执行过程详细信息
--nodeps 不验证套件档的相互关联性。安装和卸载软件时,不检查依赖。那些使用该软件包的软件在此之后可能不能正常工作
参考示例
正常安装软件包: [root@linuxcool ~]# rpm -ivh cockpit-185-2.el8.x86_64.rpm
显示系统已安装过的全部RPM软件包: [root@linuxcool ~]# rpm -qa
查询某个软件的安装路径: [root@linuxcool ~]# rpm -ql cockpit
卸载某个通过RPM软件包安装的服务: [root@linuxcool ~]# rpm -evh cockpit
升级某个软件包: [root@linuxcool ~]# rpm -Uvh cockpit-185-2.el8.x86_64.rpm
显示已安装软件包详细信息: [root@hadoop100 ~]# rpm -qi firefox
----------------------------------------------------------------
yum
(英文全拼: YellowdogUpdater Modified)
命令用于 基于RPM的软件包管理器
yum命令来自英文词组“YellowdogUpdater Modified”的缩写,
其功能是用于在Linux系统中基于RPM技术进行软件包的管理工作。
yum技术通用于RHEL、CentOS、Fedora、OpenSUSE等主流系统,
可以让系统管理人员交互式地自动化更新和管理软件包,
实现从指定服务器自动下载、更新、删除软件包的工作。
yum软件仓库及命令能够自动处理软件依赖关系,
一次性安装所需全部软件,无须烦琐的操作。
语法格式:yum [参数] [动作] 软件包
常用参数:
-c 设置配置文件路径
-C 缓存中运行,不下载或更新任何头文件
-d 设置调试等级(0-10)
-e 设置错误等级(0-10)
-h 显示帮助信息
-q 静默执行模式
-R 设置最大等待时间
-t 检查外部错误
-v 显示执行过程详细信息
-y 所有询问均回答自动yes
常用动作:
install 安装软件包
update 更新软件包
check-update 检查是否有可用的更新软件包
remove 删除软件包
list 显示软件包的信息
search 搜索指定软件包
info 显示指定软件包的描述和概要信息
clean 清理过期的缓存
shell 设置使用的shell提示符
resolvedep 显示软件包的依赖关系
localinstall 安装本地软件包
localupdate 更新本地软件包
deplist 显示软件包的依赖关系
参考示例
清理原有的软件仓库信息缓存: [root@linuxcool ~]# yum clean all
建立最新的软件仓库信息缓存: [root@linuxcool ~]# yum makecache
安装指定的服务及相关软件包: [root@linuxcool ~]# yum install httpd
更新指定的服务及相关软件包: [root@linuxcool ~]# yum update httpd
卸载指定的服务及相关软件包: [root@linuxcool ~]# yum remove httpd
显示可安装的软件包组列表: [root@linuxcool ~]# yum grouplist
显示指定服务的软件信息: [root@linuxcool ~]# yum info httpd
查看已安装的指定软件信息:
[root@hadoop100 ~]# yum list | grep firefox
firefox.x86_64 68.10.0-1.el7.centos @anaconda 已安装
firefox.i686 102.14.0-3.el7.centos updates 可更新
firefox.x86_64 102.14.0-3.el7.centos updates 可更新
更新源
/etc/yum.repos.d/CentOS-Base.repo
备份系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo
安装wget工具 yum install wget
获取国内yum源进行覆盖(阿里云、163等等)
以CentOs7为例,若为CentOs5/6只需要改下方数字
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
通常,yum 把下载的header和软件包都存储在/var/cache/yum目录中,而不会自动删除。如果你觉得它们占用了大量磁盘空间,可以使用yum clean指令进行清除
#清理yum缓存
yum clean all
#清理后重建缓存
yum makecache
----------------------------------------------------------------
wget
(英文全拼: web get)
命令用于 下载网络文件
wget命令来自英文词组“web get”的缩写,其功能是用于从指定网址下载网络文件。
wget命令非常稳定,一般即便网络波动也不会导致下载失败,
而是不断地尝试重连,直至整个文件下载完毕。
wget命令支持如HTTP、HTTPS、FTP等常见协议,可以在命令行中直接下载网络文件。
语法格式:wget [参数] 网址URL [对象]
常用参数:
-4 基于IPv4网络协议
-6 基于IPv6网络协议
-a 将日志追加写入至指定文件
-b 启动后转入后台执行
-c 支持断点续传
-d 使用调试模式
-e 执行指定的命令
-F 将输入文件当作HTML处理
-h 显示帮助信息
-i 下载指定文件中的链接
-l 设置最大递归目录深度
-nd 不要创建目录
-N 只获取比本地更新的文件
-o 将日志信息写入指定文件
-O 设置本地文件名
-P 设置文件前缀
-q 静默执行模式
-r 递归处理所有子文件
-S 显示服务器响应信息
-t 设置最大尝试次数
-T 设置最长等待时间
-v 显示执行过程详细信息
-V 显示版本信息
-w 设置等待间隔秒数
-x 强制创建目录
--ask-password 提示输入密码
--limit-rate 限制下载速度
--no-dns-cache 关闭DNS查询缓存
--no-proxy 禁止使用代理
--password 设置密码值
--random-wait 下载多个文件时,随机等待间隔秒数
--spider 仅检查文件是否存在
--user 设置用户名
参考示例
下载指定的网络文件: [root@linuxprobe ~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
下载指定的网络文件,并定义保存在本地的文件名称: [root@linuxcool ~]# wget -O Book.pdf https://www.linuxprobe.com/docs/LinuxProbe.pdf
下载指定的网络文件,限速最高每秒300k: [root@linuxcool ~]# wget --limit-rate=300k https://www.linuxprobe.com/docs/LinuxProbe.pdf
启用断点续传技术下载指定的网络文件: [root@linuxcool ~]# wget -c https://www.linuxprobe.com/docs/LinuxProbe.pdf
下载指定的网络文件,将任务放至后台执行: [root@linuxcool ~]# wget -b https://www.linuxprobe.com/docs/LinuxProbe.pdf
----------------------------------------------------------------
set
命令用于 显示与设置Shell变量信息
set命令的功能是用于显示与设置Shell变量信息,
管理员亦可以用该命令设置Shell终端特性,更好符合日常工作需要。
语法格式:set [参数] [变量名]
常用参数:
-a 显示已修改的变量
-b 使被中止的后台程序立刻回报执行状态
-e 若指令传回值不等于0则立即退出
-f 取消使用通配符
-h 自动记录函数的所在位置
-k 指令所给的参数都会被视为此指令的环境变量
-l 记录for循环的变量名称
-m 使用监视模式
-n 只读取命令而不实际执行
-p 使用优先顺序模式
-t 执行完指令后即退出
-u 遇到未定义的变量时报错
参考示例
将指定的变量提升成环境变量,并进行标记: [root@linuxcool ~]# set -a linuxprobe
设置当前Shell终端取消使用通配符: [root@linuxcool ~]# set -f
设置当前Shell终端使用监控模式: [root@linuxcool ~]# set -m
----------------------------------------------------------------
unset
命令用于 删除指定的shell变量或函数
unset命令用于删除已定义的shell变量(包括环境变量)和shell函数。
unset命令不能够删除具有只读属性的shell变量和环境变量。
语法格式:unset[参数]
常用参数:
-f 仅删除函数
-v 仅删除变量
参考实例
使用unset命令将前面所创建的环境变量mylove及其对应的值进行删除,输入如下命令: [root@linuxcool ~]# unset -v mylove
----------------------------------------------------------------
env
(英文全拼: environment)
命令用于 显示和定义环境变量
env命令来自英文单词“environment”的缩写,其功能是用于显示和定义环境变量。
为了能够让每个用户都拥有独立的工作环境,Linux系统使用了大量环境变量,
平时要想查看和修改则可以用env命令进行管理。
语法格式:env [参数] [对象]
常用参数:
-i 创建一个新的空白环境
-u 从当前环境中删除指定的变量
--help 显示帮助信息
--version 显示版本信息
参考示例
显示当前系统的全部环境变量信息: [root@linuxcool ~]# env
删除当前系统中的指定环境变量: [root@linuxcool ~]# env -u PWD
定义当前系统中的指定环境变量值: [root@linuxcool ~]# env PWD=/Dir
----------------------------------------------------------------
printenv
(英文全拼: print environment)
命令用于 显示系统环境变量与值
printenv命令来自英文词组“print environment”的缩写,
其功能是用于显示系统环境变量与值。
Linux系统中的环境变量多达几十个,在它们的共同协作下才有了用户的工作界面,
例如PATH变量让命令得以被运行了、
MAIL变量让邮件能够被接收了、
HOME变量让用户有了家目录等。
语法格式:printenv [参数] [变量名]
常用参数:
--help 显示帮助信息
--null 使用空字符结束每一行
--version 显示版本信息
参考示例
显示系统中所有的环境变量与值: [root@linuxcool ~]# printenv
显示指定环境变量的值:[root@linuxcool ~]# printenv HOME
----------------------------------------------------------------
export
命令用于 将变量提升成环境变量
export命令的功能是用于将变量提升成环境变量,
亦可将Shell函数输出为环境变量。
通常个人创建出的变量仅能在自己账户下使用,
其他人是无法看到的,若想让每个人都能看到并有权利去使用变量值的话,
则需要使用export命令进行提升操作。
语法格式:export [参数] [变量]
常用参数:
-f 设置函数名称
-n 删除指定变量
-o 创建JSON文件路径
-p 显示所有环境变量
-s 设置文件来源
参考示例
列出当前系统中所有的环境变量信息: [root@linuxcool ~]# export -p
将指定变量提升成环境变量: [root@linuxcool ~]# export MYENV
定义一个变量并提升成环境变量: [root@linuxcool ~]# export MYENV=www.linuxcool.com
----------------------------------------------------------------
readonly
命令用于 标记shell变量或函数为只读
readonly命令主要用于定义一到多个变量并设置只读属性,
为已定义的一到多个变量设置只读属性,
显示全部包含只读属性的变量,
为已定义的一到多个函数设置只读属性,
显示全部包含只读属性的函数。
语法格式: readonly [参数]
常用参数:
-a 指向数组
-A 指向关联数组
-p 示全部只读变量
-f 指向函数
参考实例
显示全部只读变量: [root@linuxcool ~]# readonly
显示全部拥有只读属性的数组: [root@linuxcool ~]# readonly -a
显示全部拥有只读属性的关联数组: [root@linuxcool ~]# readonly -A
显示全部拥有只读属性的函数: [root@linuxcool ~]# readonly -f
在它之后的选项无效: [root@linuxcool ~]# readonly --
----------------------------------------------------------------
basename
命令用于 显示文件路径名的基本文件名
basename命令主要用于显示文件路径名剔除目录部分后的显示文件名。
如何指定了后缀参数suffix,同时也删除文件的扩展名。
其中,name是文件的路径名,suffix是文件名的后缀。
语法格式:basename [参数]
常用参数:
--help 显示命令的简单说明与用法等帮助信息,然后退出
--version 显示命令的版本与作者等信息,然后退出
参考实例
显示文件路径名/usr/bin/sort的基本文件名sort: [root@linuxcool ~]# basename /usr/bin/sort
----------------------------------------------------------------
expr
(英文全拼: expression)
命令用于 字符串及整数计算器
expr命令来自英文单词“expression”的缩写,
中文译为“表达式”,其功能是用于字符串及整数计算。
常被用作Linux系统中求表达式变量值的工具,
亦可用于计算整数值或字符串的结果,当作计算器也没问题的。
语法格式:expr [表达式] 对象
常用参数:
index 找到指定字符最先出现的位置
length 统计字符串长度
substr 设置截取字符位置
参考示例
统计指定字符串的长度: [root@linuxcool ~]# expr length "This is a test"
14
抓取指定字符串中指定位置区间的字符(起始位置为3,抓取数量为5): [root@linuxcool ~]# expr substr "this is a test" 3 5
is is
进行四则运算: [root@linuxcool ~]# expr "\( 10 + 10 \) \* 2 + 100"
140
进行一系列的简单整数运算,其中乘法(*) 在命令里表示通配符 需转义符:
[root@linuxcool ~]# expr "5 + 5"
10
[root@linuxcool ~]# expr "10 - 5"
5
[root@linuxcool ~]# expr "5 \* 5"
25
[root@linuxcool ~]# expr "5 / 5"
1
----------------------------------------------------------------
test
命令用于 检查条件是否成立
test命令来自英文单词“测试”,
其功能是用于检查条件是否成立,能够对数值、字符和文件进行条件测试。
Linux系统中的Shell脚本程序常用到此命令,
与if条件控制语句搭配结合使用效果更好,
这样只有当某个指定条件成立时才会执行后续代码,
大大地提高了程序的灵活性和安全性,
而不是不论条件是否满足都一股脑地跑完全部代码。
语法格式:test 表达式
常用参数:
-eq 等于
-ge 大于等于
-gt 大于
-le 小于等于
-lt 小于
-ne 不等于
参考示例
判断两个数值是否相等:
[root@linuxcool ~]# cat File.sh
num1=100
num2=100
if test $[num1] -eq $[num2] then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
判断两个字符串是否相同:
[root@linuxcool ~]# cat File.sh
str1="LinuxPROBE"
str2="LinuxCOOL"
if test str1=ste2 then
echo '两个字符串相同!'
else
echo '两个字符串不相同!'
fi
判断文件是否存在:
[root@linuxcool ~]# cat File.sh
if test -e /bin/bash then
echo '文件已存在!' else
echo '文件不存在!'
fi
----------------------------------------------------------------
jobs命令
命令用于 显示终端后台的作业信息(查看挂起进程)
jobs命令来自英文单词“工作”,其功能是用于显示终端后台的作业信息。
Linux系统运维人员可以使用jobs命令查看到当前系统中终端后台的任务列表及其运行状态,
查看任务列表及对应的进程号码,简单方便地了解到当前有哪些正在后台运行的工作。
可以配合fg命令和bg命令使用
语法格式: jobs [参数]
常用参数:
-l 显示作业列表及进程号
-n 仅显示自发生变化的作业
-p 仅显示其对应的进程号
-r 仅显示运行的作业
-s 仅显示暂停的作业
-x 替代原有作业的进程ID
参考示例
显示当前后台的作业列表: [root@linuxcool ~]# jobs
显示当前后台的作业列表及进程号: [root@linuxcool ~]# jobs -l
仅显示运行的后台作业: [root@linuxcool ~]# jobs -r
仅显示已暂停的后台作业: [root@linuxcool ~]# jobs -s
仅显示自上次执行jobs命令后状态又发生变化的后台作业: [root@linuxcool ~]# jobs -n
----------------------------------------------------------------
fg命令
(英文全拼: foreground)
命令用于 将作业放到前台运行
fg命令来自英文单词“foreground”,中文译为“前景”,
其功能是用于将作业放到前台运行。
在Linux系统中可以使用bg命令将作业放到后台运行,
同理也能够使用fg命令将已经在后台运行或被挂起的作业放回前台终端继续运行。
语法格式:fg [参数] 作业标识
常用参数:
数字 指定要放到前台的作业标识号
参考示例
将指定编号标识的作业放回到终端前台继续运行: [root@linuxcool ~]# fg 1
----------------------------------------------------------------
bg命令
(英文全拼: background)
命令用于 将作业放到后台运行
bg命令来自英文单词“background”的缩写,中文译为“背景、后台”,
其功能是用于将作业放到后台运行。
在Linux系统终端中执行命令时,如遇到备份、打包、下载等长时间的任务,
就会很长一段时间占用宝贵的终端执行界面,无法执行其他任务。
而bg命令则可以将指定的命令任务放到系统后台去执行,
使得终端界面可以继续其他工作,效果等同于“命令 &”的执行效果。
语法格式:bg [参数]
常用参数:
数字 指定需要放到后台的作业标识号
参考示例
将指定标识的任务放到后台继续执行: [root@linuxcool ~]# bg 1
扩展知识:执行指定任务,并将其放到后台执行: [root@linuxcool ~]# tar czvf File.tar.gz /Dir/www &
----------------------------------------------------------------