Linux命令组成
- Linux命令一般格式:
命令名称 [命令参数] [命令对象]
注意:
- 命令名称、命令参数、命令对象之间请用空格分隔
- 命令对象一般是指要处理的文件、目录、用户等资源
- 命令参数是为了让 Linux 系统命令能够更贴合用户的实际需求进行工作
- 命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用--与-作为前缀
- 长格式与长格式不可以合并;长格式与短格式不可以合并;短格式与短格式可以合并,合并后仅保留一个
-
(减号),ps连减号都可以不要
项目 命令 长格式 man --help 短格式 man -h 推荐
命令在 Linux 中的执行分为 4 个步骤:
-
第一步:
判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话直接执行 -
第二步:
Linux 系统检查用户输入的命令是否为“别名命令”
自定义的命令
alias 别名=命令
取消一个命令别名
unalias 别名
如:
使用 rm 命令删除文件时,Linux 系统都会要求我们再确认是否执行删除操作,其实这就是 Linux 系统为了防止用户误删除文件而特意设置的 rm 别名命令
alias rm=rm -i
-
第三步:
Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤 4 继续处理。可以使用type [命令]
来判断用户输入的命令是内部命令还是外部命令 -
第四步:
系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作 PATH, 可以简单地把它理解成是“解释器的小助手”,作用是告诉 Bash 解释器待执行的命令可能存放的位置,然后 Bash 解释器就会乖乖地在这些位置中逐个查找。 PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到 Bash 解释器对Linux 命令的查找
添加PATH
PATH=$PATH:<绝对路径>
查看命令的说明文档
- 一般格式
man [command]
如:man ls
man命令中常用按键 | 用途 |
---|---|
Space |
向下翻一页 |
PgDn |
向下翻一页 |
PgUp |
向上翻一页 |
Home |
直接前往首页 |
End |
直接前往尾页 |
/ |
从上至下搜索某个关键词,如“/linux” |
? |
从下至上搜索某个关键词,如“?linux” |
n |
定位到下一个搜索到的关键词 |
N |
定位到上一个搜索到的关键词 |
q |
退出帮助文档 |
man 命令帮助信息的结构 | 意义 |
---|---|
NAME |
命令的名称 |
SYNOPSIS |
参数的大致使用方法 |
DESCRIPTION |
绍说明 |
EXAMPLES |
演示(附带简单说明) |
OVERVIEW |
概述 |
DEFAULTS |
默认的功能 |
OPTIONS |
具体的可用选项(带介绍) |
ENVIRONMENT |
环境变量 |
FILES |
用到的文件 |
SEE ALSO |
相关的资料 |
HISTORY |
维护历史与联系方式 |
常用的系统工作命令
1. eho
在终端输出字符串或变量提取后的值
echo [字符串|$变量]
如:
echo Ricsy
echo $SHELL
参阅:
2. date
显示及设置系统的时间或日期
date [option] [+format]
参数 | 作用 |
---|---|
%t |
跳格[Tab 键] |
%H |
小时(00~23) |
%I |
小时(00~12) |
%M |
分钟(00~59) |
%S |
秒(00~59) |
%j |
今年中的第几天 |
如:
- 按照默认格式查看当前系统时间
date
- 按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间
date "+%Y-%m-%d %H:%M:%S"
系统的当前时间设置为 2019年07月24日8点30分
date -s "20190724 8:30:00"
date
查看今天是今年中的第几天
date "+%j"
3. reboot
重启系统(仅限root用户)
reboot
4. poweroff
关闭系统(仅限root用户)
poweroff
5. wget
在终端中下载网络文件
wget [option] [url]
参数 | 作用 |
---|---|
-b |
后台下载模式 |
-P |
下载到指定目录 |
-t |
最大尝试次数 |
-c |
断点续传 |
-p |
下载页面内所有资源,包括图片、视频等 |
-r |
递归下载 |
6. ps
查看系统中的进程状态
ps [option]
参数 | 作用 |
---|---|
-a |
显示所有进程(包括其他用户的进程) |
-u |
用户以及其他详细信息 |
-x |
显示没有控制终端的进程 |
- 进程状态
名称 | 含义 |
---|---|
USER |
进程的所有者 |
PID |
进 程ID 号 |
%CPU |
运算器占用率 |
%MEM |
内 存 占用率 |
VSZ |
虚 拟 内 存使用量(单位是 KB) |
RSS |
占用的固定内存量(单位是KB) |
TTY |
所 在终端 |
STAT |
进程状态 |
START |
被启动的时间 |
TIME |
实际使用CPU的时间 |
COMMAND |
命令名称与参数 |
- 在Linux 系统中,有 5 种常见的进程状态
进程状态 | 代号 | 含义 |
---|---|---|
运行 | R |
➢进程正在运行或在运行队列中等待 |
中断 | S |
➢进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态 |
不可中断 | D |
➢进程不响应系统异步信号,即便用 kill 命令也不能将其中断 |
僵死 | Z |
➢进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放 |
停止 | T |
➢进程收到停止信号后停止运行 |
7. top
用于动态地监视进程活动与系统负载等信息
能够动态地查看系统运维状态,完全将它看作 Linux 中的“强化版的Windows 任务管理器”
top
行数 | 说明 |
---|---|
第1行 | 系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、 5分钟、 15 分钟内的平均值,数值越小意味着负载越低) |
第2行 | 进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数 |
第3行 | 用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等 |
第4行 | 物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量 |
第5行 | 虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量 |
8. pidof
查询某个指定服务进程的 PID 值
每个进程的进程号码值(PID)是唯一的,因此可以通过 PID 来区分不同的进程
pidof [option] [servicename]
参数 | 作用 |
---|---|
-s |
仅返回一个进程号 |
-c |
仅显示具有相同“root”目录的进程 |
-x |
显示由脚本开启的进程 |
-o |
指定不显示的进程ID |
如:
pidof sshd
9. kill
终止某个指定 PID 的服务进程
kill [option] [进程 PID]
如:
kill 13750
10. killall
终止某个指定名称的服务所对应的全部进程
killall [option] [servicename]
如:
pidof sshd
killall sshd
提示:
- 执行一个命令时想立即停止它,可以直接Ctrl+C,就会立即终止该命令的进程
- 某些命令执行时会不断的往屏幕输出信息,影响后续命令的输入,可以采用再命令末尾加上&,使命令进入系统后台运行
系统状态检测命令
1. ifconfig
获取网卡配置与网络状态等信息
ifconfig [network device] [option]
如:
ifconfig
2. uname
查看系统内核与系统版本等信息
uname (-a)
如:
uname
uname -a
- 查看当前系统版本的详细信息
cat /etc/redhat-release
3. uptime
查看系统的负载信息
uptime
提示:
- 显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。
- 平均负载值指的是系统在最近 1 分钟、 5 分钟、 15 分钟内的压力情况;负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5
4. free
显示当前系统中内存的使用量信息
free (-h)
如:
free
free -h
参数 | 含义 |
---|---|
total | 内存总量 |
used | 已用量 |
free | 可用量 |
shared | 进程共享的内存量 |
buff/cache | 磁盘缓存的内存量/缓存的内存量 |
5. who
查看当前登入主机的用户终端信息
who [option]
如:
who
提示:
- 对应用户名、终端设备、登录到系统的时间
6. last
查看所有系统的登录记录
以日志文件形式存在于系统中,可被修改
last [option]
如:
last
7. history
显示历史执行过的命令
history (-c)
提示:
- 执行 history 命令能显示出当前用户在本地计算机中执行过的最近 1000 条命令记录
- 如果觉得 1000 不够用,还可以自定义/etc/profile文件中的
HISTSIZE变量值- 在使用 history 命令时,如果使用-c 参数则会清空所有的命令历史记录
- 使用
!编码数字
的方式来重复执行某一次的命令- 历史命令会被保存到用户家目录中的.bash_history即
~/.bash_history
如:
history -c
8. sosreport
收集系统配置及架构信息并输出诊断文档
sosreport
工作目录切换命令
1. pwd
显示用户当前所处的工作目录
pwd [option]
如:
pwd
2. cd
切换工作路径
cd [path]
命令 | 作用 |
---|---|
cd - |
返回到上一次所处的目录 |
cd .. |
进入上级目录 |
cd ~ |
切换到当前用户的家目录或“cd ~username”切换到其他用户的家目录 |
3. ls
显示目录中的文件信息
ls [option] [filename]
提示:
参数 | 含义 |
---|---|
-a |
看到全部文件(包括隐藏文件) |
-l |
查看文件的属性、大小等详细信息 |
-h |
人性化输出信息 |
如:
ls -alh
文本文件编辑命令
1. cat
查看纯文本文件(内容较少的)
cat [option[-n 显示行号]] [filename]
如:
cat -n /etc/ssh/ssh_config
2. more
查看纯文本文件(内容较多的)
在最下面使用百分比的形式来提示您已经阅读了多少内容
more [option] [filename]
提示:
- 空格或回车进行翻页
如:
more /etc/ssh/ssh_config
3.head
查看纯文本文档的前 N 行
head [option[-n N]] [filename]
如:
head -n 10 /etc/ssh/ssh_config
4. tail
查看纯文本文档的后 N 行或持续刷新内容
tail [option[-n N]] [filename]
提示:
tail -f [filename]
持续刷新一个文件的内容
如:
tail -n 10 /etc/ssh/ssh_config
5. tr
替换文本文件中的字符
tr [原始字符] [目标字符]
如:
把文本内容中的英文全部替换为大写
cat anaconda-ks.cfg | tr [a-z] [A-Z]
6. wc
统计指定文本的行数、字数、字节数
wc [option] [filename]
参数 | 含义 |
---|---|
-l |
只显示行数 |
-w |
只显示单词数 |
-c |
只显示字节数 |
如:
wc anaconda-ks.cfg
passwd 是用于保存系统账户信息的文件,要统计当前系统中有多少个用户
wc -l /etc/passwd
7.stat
查看文件的具体存储信息和时间等信息
stat [filename]
如:
stat anaconda-ks.cfg
8. cut
按“列”提取文本字符
cut [option] [filename]
提示:
- -f 参数来设置需要看的列数
- -d 参数来设置间隔符号
如:
head -n 2 /etc/passwd
cut -d: -f1 /etc/passwd
9. diff
比较多个文本文件的差异
diff [option] [filename]
提示:
- --brief 参数来确认两个文件是否不同
- -c 参数来详细比较出多个文件的差异之处
- 这绝对是判断文件是否被篡改的有力神器
文件目录管理命令
1. touch
创建空白文件或设置文件的时间
与stat搭配
touch [option] [filename]
参数 | 含义 |
---|---|
-a |
仅修改读取时间(atime) |
-m |
仅修改修改时间(mtime) |
-d |
同时修改 atime与mtime |
如:
touch test.txt
stat anaconda-ks.cfg
touch -d "2017-05-04 15:44" anaconda-ks.cfg
2. mkdir
创建空白的目录
mkdir [option] [filename]
提示:
- 结合-p 参数来递归创建出具有嵌套叠层关系的文件目录
3. cp
复制文件或目录
cp [option] [源文件] [目标文件]
参数 | 含义 |
---|---|
-p |
保留原始文件的属性 |
-d |
若对象为“链接文件”,则保留该“链接文件”的属性 |
-r |
递归持续复制(用于目录) |
-i |
若目标文件存在则询问是否覆盖 |
-a |
相当于-pdr(p、d、r 为上述参数) |
4. mv
剪切文件或将文件重命名
mv [option] [源文件] [目标路径|目标文件名]
提示:
- 剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件
- 如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名
5. rm
删除文件或目录
rm [option] [filename]
提示:
- -f 参数来强制删除,不询问是否要执行删除操作
- -r 参数用于删除一个目录
6. dd
按照指定大小和个数的数据块来复制文件或转换文件
随意创建任意大小的文件
dd 命令来压制出光盘镜像文件
参数 | 含义 |
---|---|
if |
输入的文件名称 |
of |
输出的文件名称 |
bs |
设置每个“块”的大小 |
count |
设置要复制“块”的个数 |
如:
用 dd 命令从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后保存成名为 560_file 的文件
dd if=/dev/zero of=560_file count=1 bs=560M
7. file
查看文件的类型
file [filename]
提示:
- 由于文本、目录、设备等所有这些一切都统称为文件,而我们又不能单凭后缀就知道具体的文件类型,这时就需要使用 file 命令来查看文件类型了
打包压缩和搜索命令
1. tar
对文件进行打包压缩或解压
tar [option] [filename]
参数 | 含义 |
---|---|
-c |
创建压缩文件 |
-x |
解开压缩文件 |
-t |
查看压缩包内有哪些文件 |
-z |
用 Gzip 压缩或解压 |
-j |
用 bzip2 压缩或解压 |
-v |
显示压缩或解压的过程 |
- f |
目标文件名(放到参数最后一位) |
`-p | 保留原始的权限与属性 |
-P |
使用绝对路径来压缩 |
-C |
指定解压到的目录 |
如:
压缩
tar -czvf [filename.tar.gz]
解压
tar -xzvf [filename.tar.gz]
2. grep
在文本中执行关键词搜索,并显示匹配的结果
grep [option] [filename]
参数 | 含义 |
---|---|
-b |
将可执行文件(binary)当作文本文件(text)来搜索 |
-c |
仅显示找到的行数 |
-i |
忽略大小写 |
-n |
显示行号推荐
|
-v |
反向选择—仅列出没有“关键词”的行推荐
|
如:
/etc/passwd 文件是保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用 grep 命令来查找出当前系统中不允许登录系统的所有用户信息
grep /sbin/nologin /etc/passwd
3. find
按照指定条件来查找文件
find [path] [条件] [操作]
参数 | 含义 |
---|---|
-name |
匹配名称 |
-perm |
匹配权限(mode 为完全匹配, -mode 为包含即可) |
-user |
匹配所有者 |
-group |
匹配所有组 |
-mtime -n +n |
匹配修改内容的时间(-n 指 n 天以内, +n 指 n 天以前) |
-atime -n +n |
匹配访问文件的时间(-n 指 n 天以内, +n 指 n 天以前) |
-ctime -n +n |
匹配修改文件权限的时间(-n 指 n 天以内, +n 指 n 天以前) |
-nouse r |
匹配无所有者的文件 |
-nogroup |
匹配无所有组的文件 |
-newer f1 !f2 |
匹配比文件 f1 新但比 f2 旧的文件 |
--type b/d/c/p/l/f |
匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size |
匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查`找小于 50KB 的文件) |
-prune |
忽略某个目录 |
-exec …… {}\; |
后面可跟用于进一步处理搜索结果的命令;{}表示find搜索到的每一个文件;;为结尾符 |
如:
在整个文件系统中找到属于root用户的文件并复制到/root/root
find / -user root -exec cp -a {} /root/root/ \;
更新中......