- 执行查看帮助命令
1.1 Linux命令的格式
命令名称 [命令参数] [命令对象]
命令名称、命令参数、命令对象之间请用空格键分隔
命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写)
1.2 man帮助命令
长格式 | man --help |
---|---|
短格式 | man -h |
1.3 man帮助信息的结构及意义
结构名称 | 代表意义 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
1.4 man命令中常用按键以及用途
按键 | 用处 |
---|---|
空格键 | 向下翻一页 |
PaGe down | 向下翻一页 |
PaGe up | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
- 常用系统工作命令
2.1 echo命令
用于在终端输出字符串或变量提取后的值
echo [字符串 | $变量]
[root@linuxprobe ~]# echo Linuxprobe.Com
Linuxprobe.Com
[root@linuxprobe ~]# echo $SHELL
/bin/bash
2.2 date命令
用于显示及设置系统的时间或日期
date [选项] [+指定的格式]
date命令中的参数以及作用
参数 | 作用 |
---|---|
%t | 跳格[Tab键] |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
# 查看当前系统时间的date命令
[root@linuxprobe ~]# date
Mon Aug 24 16:11:23 CST 2017
# 按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2017-08-24 16:29:12
# 将系统的当前时间设置为2017年9月1日8点30分
[root@linuxprobe ~]# date -s "20170901 8:30:00"
Fri Sep 1 08:30:00 CST 2017
# 参数%j可用来查看今天是当年中的第几天
[root@linuxprobe ~]# date "+%j"
244
2.3 reboot命令
用于重启系统,其格式为reboot,由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启
[root@linuxprobe ~]# reboot
2.4 poweroff命令
用于关闭系统,其格式为poweroff。该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑
[root@linuxprobe ~]# poweroff
2.5 wget命令
用于在终端中下载网络文件
wget [参数] 下载地址
wget命令的参数以及作用
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录(大写) |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等(小写) |
-r | 递归下载 |
示例
[root@xx]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
[root@linuxprobe ~]# wget -r -p https://www.linuxprobe.com
2.6 ps命令
用于查看系统中的进程状态
ps [参数]
ps命令的参数以及作用
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
2.7 top命令
用于动态地监视进程活动与系统负载等信息,其格式为top
top命令执行结果的前5行为系统整体的统计信息,其所代表的含义如下
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
2.8 pidof命令
用于查询某个指定服务进程的PID值
pidof [参数] [服务名称]
每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程
[root@linuxprobe ~]# pidof sshd
2156
2.9 kill命令
用于终止某个指定PID的服务进程
kill [参数] [进程PID]
[root@linuxprobe ~]# kill 2156
2.10 killall命令
用于终止某个指定名称的服务所对应的全部进程
killall [参数] [服务名称]
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程
[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]#
2.11 Ctrl + C
在系统终端中执行一个命令后想立即停止它,可以同时按下组合键Ctrl + C,立即终止执行
2.12 &符号
如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行
- 系统状态检测命令
3.1 ifconfig命令
用于获取网卡配置与网络状态等信息
ifconfig [网络设备] [参数]
使用ifconfig命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量
3.2 uname命令
用于查看系统内核与系统版本等信息
uname [-a]
在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息
[root@linuxprobe ~]# uname -a
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
要查看当前系统版本的详细信息,则需要查看redhat-release文件,其命令以及相应的结果如下
[root@linuxprobe ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
3.3 uptime命令
用于查看系统的负载信息,格式为uptime
uptime命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。
[root@linuxprobe ~]# uptime
22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18
3.4 free命令
用于显示当前系统中内存的使用量信息,格式为“free [-h]”
为了保证Linux系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。在使用free命令时,可以结合使用-h参数以更人性化的方式输出当前内存的实时使用量信息。
[root@linuxprobe ~]# free -h
3.5 who命令
用于查看当前登入主机的用户终端信息,格式为“who [参数]”
[root@linuxprobe ~]# who
登陆的用户名 | 终端设备 | 登陆到系统的时间 |
---|---|---|
root | :0 | 2017-08-24 17:52 (:0) |
root | pts/0 | 2017-08-24 17:52 (:0) |
3.6 last命令
用于查看所有系统的登录记录,格式为“last [参数]”
使用last命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
3.7 history命令
用于显示历史执行过的命令,格式为“history [-c]”
history命令应该是作者最喜欢的命令。执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。如果觉得1000不够用,还可以自定义/etc/profile文件中的HISTSIZE变量值。在使用history命令时,如果使用-c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令。总之,history命令有很多有趣的玩法等待您去开发
[root@linuxprobe ~]# history
1 tar xzvf VMwareTools-9.9.0-2304977.tar.gz
2 cd vmware-tools-distrib/
3 ls
4 ./vmware-install.pl -d
5 reboot
6 df -h
7 cd /run/media/
8 ls
9 cd root/
10 ls
11 cd VMware\ Tools/
12 ls
13 cp VMwareTools-9.9.0-2304977.tar.gz /home
14 cd /home
15 ls
16 tar xzvf VMwareTools-9.9.0-2304977.tar.gz
17 cd vmware-tools-distrib/
18 ls
19 ./vmware-install.pl -d
20 reboot
21 history
[root@linuxprobe ~]# !15
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容。
[root@linuxprobe ~]# cat ~/.bash_history
要清空当前用户在本机上执行的Linux命令历史记录信息,可执行如下命令
[root@linuxprobe ~]# history -c
3.8 sosreport命令
用于收集系统配置及架构信息并输出诊断文档,格式为sosreport
[root@linuxprobe ~]# sosreport
# 提示命令不存在
yum install sos
- 工作目录切换命令
4.1 pwd命令
用于显示用户当前所处的工作目录,格式为“pwd [选项]”
[root@linuxprobe etc]# pwd
/etc
4.2 cd命令
用于切换工作路径,格式为“cd [目录名称]”
可以通过cd命令迅速、灵活地切换到不同的工作目录
cd - 命令返回到上一次所处的目录
cd… 命令进入上级目录
cd ~ 命令切换到当前用户的家目录
cd ~ username 切换到其他用户的家目录
4.3 ls命令
用于显示目录中的文件信息,格式为“ls [选项] [文件] ”
-a 参数看到全部文件
-l 参数可以查看文件的属性、大小等详细信息
-d 查看目录属性信息
-h 以人性化的方式显示
- 文本文件编辑命令
5.1 cat命令
用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”
-n参数 显示行号的话
[root@linuxprobe ~]# cat -n initial-setup-ks.cfg
1 #version=RHEL7
2 # X Window System configuration information
3 xconfig --startxonboot
5.2 more命令
用于查看纯文本文件(内容较多的),格式为“more [选项]文件”
more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容。您还可以使用空格键或回车键向下翻页
[root@linuxprobe ~]# more initial-setup-ks.cfg
5.3 head命令
用于查看纯文本文档的前N行,格式为“head [选项] [文件]”
[root@linuxprobe ~]# head -n 20 initial-setup-ks.cfg
5.4 tail命令
用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项] [文件]”
当想要实时查看最新日志文件时,tail -f 文件名
[root@linuxprobe ~]# tail -f /var/log/messages
5.5 tr命令
用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”
cat anaconda-ks.cfg | tr [a-z] [A-Z]
5.6 wc命令
用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
统计当前系统中有多少个用户
[root@linuxprobe ~]# wc -l /etc/passwd
38 /etc/passwd
5.7 stat命令
用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”
stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解
[root@linuxprobe ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1213 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 68912908 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2017-07-14 01:46:18.721255659 -0400
Modify: 2017-05-04 15:44:36.916027026 -0400
Change: 2017-05-04 15:44:36.916027026 -0400
Birth: -
5.8 cut命令
用于按“列”提取文本字符,格式为“cut [参数] 文本”
-f 参数来设置需要看的列数
-d 参数来设置间隔符号
[root@linuxprobe ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@linuxprobe ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
5.9 diff命令
用于比较多个文本文件的差异,格式为“diff [参数] 文件”
–brief 来确认两个文件是否不同
-c 详细比较出多个文件的差异之处
[root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt
Files diff_A.txt and diff_B.txt differ
[root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt
- 文件目录管理命令
6.1 touch命令
用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”
文件存在时修改的是文件的时间
touch命令的参数及其作用
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
6.2 mkdir命令
用于创建空白的目录,格式为“mkdir [选项] 目录”
-p 递归创建嵌套叠层关系的文件目录
[root@linuxprobe ~]# mkdir linuxprobe
[root@linuxprobe ~]# cd linuxprobe
[root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e
[root@linuxprobe linuxprobe]# cd a
[root@linuxprobe a]# cd b
[root@linuxprobe b]#
6.3 cp命令
用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
cp命令的参数及其作用
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
6.4 mv命令
用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名
[root@linuxprobe ~]# mv x.log linux.log
[root@linuxprobe ~]# ls
install.log linux.log
6.5 rm命令
用于删除文件或目录,格式为“rm [选项] 文件”
-f 强制删除,不显示询问
-r 递归删除目录
删除时一定不要加 -f 这个参数,一般将要删除的文件移动到其他目录在进行删除
[root@linuxprobe ~]# rm install.log
rm: remove regular empty file ‘install.log’? y
[root@linuxprobe ~]# rm -f linux.log
[root@linuxprobe ~]# ls
[root@linuxprobe ~]#
6.6 dd命令 ?
用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”
dd命令的参数及其作用
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
可以用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件
[root@linuxprobe ~]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s
使用dd命令来压制出光盘镜像文件,将它变成一个可立即使用的iso镜像
[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
7311360+0 records in
7311360+0 records out
3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s
6.7 file命令
用于查看文件的类型,格式为“file 文件名”
[root@linuxprobe ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@linuxprobe ~]# file /dev/sda
/dev/sda: block special
- 打包压缩与搜索命令
7.1 tar命令
用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”
tar命令的参数及其作用
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名,必须放到最后 |
-p | 保留原始的权限与属性(小写) |
-P | 使用绝对路径来压缩(大写) |
-C | 指定解压到的目录(大小) |
-f参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称
# 压缩
[root@linuxprobe ~]# tar czvf etc.tar.gz /etc
# 解压
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc
7.2 grep命令
用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”
grep命令的参数及其作用
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行。 |
grep命令是用途最广泛的文本搜索匹配工具,虽然有很多参数,但是大多数基本上都用不到
-n参数 用来显示搜索到信息的行号;
-v参数 用于反选信息(即没有包含关键词的所有信息行)
[root@linuxprobe ~]# grep /sbin/nologin /etc/passwd
7.3 find命令
用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”
find命令中的参数以及作用
参数 | 作用 |
---|---|
-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天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
—type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… {}; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
获取到/etc目录中所有以host开头的文件列表
[root@linuxprobe ~]# find /etc -name "host*" -print
在整个系统中搜索权限中包括SUID权限的所有文件
[root@linuxprobe ~]# find / -perm -4000 -print
-exec这个参数用于把find命令搜索到的结果交由紧随其后的命令作进一步处理
在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录。
该实验的重点是“-exec {} \;”参数,其中的{}表示find命令搜索出的每一个文件,并且命令的结尾必须是“\;”。完成该实验的具体命令如下:
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \;