常用系统工作命令
1. echo命令
echo命令用于在终端输出字符串或变量提取后的值
格式为“ echo [字符串 | $变量 ]”
例如,把指定字符串“welcome to xiaojuanmao’s world”输出到终端屏幕的命令为
[root@xiaojuanmao ~]# echo "welcome to xiaojuanmao's world"
welcome to xiaojuanmao's world
下面,使用$变量的方式提取变量 SHELL的值,并将其输出到屏幕上:
[root@xiaojuanmao ~]# echo $SHELL
/bin/bash
2. date命令
date [选项 ] [+指定的格式 ]
date命令中输入以“ “+”号开头的参数,即可按照指定格式来输出系统的时间或日期
常用于文件备份时命名格式
其主要参数如下(来源:linux就该这样学)
常见用法
- 查看当前系统时间
[root@xiaojuanmao ~]# date
Sat Apr 25 03:43:03 EDT 2020
- 按照“年-月 -日 小时 :分钟 :秒”的格式查看当前系统时间
[root@xiaojuanmao ~]# date "+%Y-%m-%d %H:%M:%S"
2020-04-25 03:44:15
- 设置指定时间 如2018年 8月 8日 8点 8分
[root@xiaojuanmao ~]# date -s "2018-08-08 08:08:08"
Wed Aug 8 08:08:08 EDT 2018
[root@xiaojuanmao ~]# date
Wed Aug 8 08:08:11 EDT 2018
- date命令中的参数 %j可用来查看今天是当年中的第几天
这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间
该参数的使用方式以及显示结果如下所示
[root@xiaojuanmao ~]# date "+%j"
220
3.wget命令
wget -c 重新启动下载中断的文件,对于下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件
使用 wget -O 下载并以不同的文件名保存
4. ps命令
ps命令用于查看系统中的进程状态,格式为“ ps [参数 ]”。
执行ps aux时会出现进程情况的输出值
[root@xiaojuanmao ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128092 6704 ? Ss 07:29 0:01 /usr/lib/syste
root 2 0.0 0.0 0 0 ? S 07:29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:29 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 07:29 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 07:29 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 07:29 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 07:29 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S< 07:29 0:00 [khelper]
root 13 0.0 0.0 0 0 ? S 07:29 0:00 [kdevtmpfs]
root 14 0.0 0.0 0 0 ? S< 07:29 0:00 [netns]
root 15 0.0 0.0 0 0 ? S 07:29 0:00 [khungtaskd]
root 16 0.0 0.0 0 0 ? S< 07:29 0:00 [writeback]
root 17 0.0 0.0 0 0 ? S< 07:29 0:00 [kintegrityd]
root 18 0.0 0.0 0 0 ? S< 07:29 0:00 [bioset]
root 19 0.0 0.0 0 0 ? S< 07:29 0:00 [kblockd]
root 20 0.0 0.0 0 0 ? S< 07:29 0:00 [md]
root 21 0.2 0.0 0 0 ? R 07:29 0:09 [kworker/0:1]
root 26 0.0 0.0 0 0 ? S 07:29 0:00 [kswapd0]
5. top命令
top - 08:40:47 up 1:10, 2 users, load average: 0.00, 0.01, 0.05 ##
系统时间、运行时间、登录终端数、系统负载
(三个数值分别为 1分钟、 5分钟、 15分钟内的平均值,数值越小意味着负载越低)。
Tasks: 153 total, 3 running, 150 sleeping, 0 stopped, 0 zombie ##
进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ##
用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源
百分比、空闲的资源百分比等。
KiB Mem : 1867264 total, 1549568 free, 138688 used, 179008 buff/cache ##
物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
KiB Swap: 1048572 total, 1048572 free, 0 used. 1542376 avail Mem ##
虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
708 root 20 0 302428 5996 4648 S 0.3 0.3 0:09.61 vmtoolsd
2729 root 20 0 157708 2228 1552 R 0.3 0.1 0:00.37 top
1 root 20 0 128092 6704 3948 S 0.0 0.4 0:01.41 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 R 0.0 0.0 0:00.70 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.14 watchdog/0
12 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
##6. pidof命令
pidof命令用于查询某个指定服务进程的 PID值,格式为“ pidof [参数 ] [服务名称 ]”。
每个进程的进程号码值(PID)是唯一的,因此可以通过 PID来区分不同进程。
例如,可以使用如下命令来查询本机上httpd服务程序的 PID
[root@xiaojuanmao ~]# pidof sshd
2617 1052
##7. kill命令
kill命令用于终止某个指定 PID的服务进程,格式为“ kill [参数 ] [进程 PID]”
[root@xiaojuanmao ~]# pidof httpd
2792 2791 2790 2789 2788 2787
[root@xiaojuanmao ~]# kill 2787
系统状态检测命令
1. ifconfig命令
ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ ifconfig [网络设备 ] [参数 ]”。
[root@xiaojuanmao ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.25.100 netmask 255.255.255.0 broadcast 192.168.25.255
inet6 fe80::d5d0:9a04:c840:1c32 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3a:91:dc txqueuelen 1000 (Ethernet)
RX packets 1742 bytes 165515 (161.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1516 bytes 840179 (820.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2. uname命令
uname命令用于查看系统内核与系统版本等信息,格式为“ uname [-a]”。
一般会固定搭配上 -a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
[root@xiaojuanmao ~]# uname -a
Linux xiaojuanmao 3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
如果要查看当前系统版本的详细信息–内核,则需要查看redhat-release文件
[root@xiaojuanmao ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
3. uptime命令
uptime用于查看系统的负载信息
可以显示当前系统时间、系统已运行 时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1分钟、 5分钟、 15分钟内的压力情况;
[root@xiaojuanmao ~]# uptime
09:07:19 up 1:37, 2 users, load average: 0.00, 0.01, 0.05
负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5
4. free命令
free用于显示当前系统中内存的使用量信息,格式为“ free [-h]”。
可以结合使用 -h参数以更人性化的方式输出当前内存的实时使用量信息。
[root@xiaojuanmao ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 141M 1.4G 8.7M 211M 1.5G
Swap: 1.0G 0B 1.0G
5. who命令
who用于查看当前登入主机的用户终端信息
这三个简单的字母可以快速显示出所有正在登录本机的用户的名称以及他们正在开启的终端信息
[root@xiaojuanmao ~]# who
root tty1 2020-04-25 03:18
root pts/0 2018-08-08 08:51 (192.168.25.1)
6. last命令
last命令用于查看所有系统的登录记录
[root@xiaojuanmao ~]# last
root pts/0 192.168.25.1 Wed Aug 8 08:51 still logged in
root pts/0 192.168.25.1 Sat Apr 25 03:19 - 08:51 (-625+-18:-2
root tty1 Sat Apr 25 03:18 still logged in
reboot system boot 3.10.0-514.el7.x Sat Apr 25 03:06 - 09:14 (-625+-17:-5
7. history命令
history命令用于显示历史执行过的命令,格式为“ history [-c]”。
[root@xiaojuanmao ~]# history
1 yum install wget -y
2 ip a
3 wget
还可以使用==“!编码数字”== 的方式来 重复执行某一次的命令
history -c 参数则会清空所有的命令历史记录。
历史命令会被保存到用户家目录中的.bash_history文件中。
[root@xiaojuanmao ~]# cat ~/.bash_history
#工作目录切换命令
1. pwd
显示用户当前所处的工作目录
[root@xiaojuanmao ~]# pwd
/root
2. cd
命令用于切换工作路径,格式为“ cd [目录名称 ]”。
[root@xiaojuanmao ~]# cd /etc
[root@xiaojuanmao etc]# pwd
/etc
3. ls
ls命令用于显示目录中的文件信息,格式为“ ls [选项 ] [文件 ] ”。
使用 ls命令的“ “-a”参数看到全部文件(包括隐藏文件)
使用“ “-l”参数可以查看文件的属性、大小等详细信息
[root@xiaojuanmao ~]# ls -al
total 72
dr-xr-x---. 3 root root 237 Oct 25 2019 .
dr-xr-xr-x. 17 root root 245 Apr 21 2020 ..
-rw-------. 1 root root 1432 Oct 24 2019 anaconda-ks.cfg
-rw-------. 1 root root 5224 Aug 8 08:51 .bash_history
-rw-r--r--. 1 root root 18 Dec 28 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 28 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 28 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 28 2013 .cshrc
-rw-r--r--. 1 root root 15264 Sep 18 2019 epel-release-7-12.noarch.rpm
-rw-r--r--. 1 root root 15265 Oct 25 2019 epel-release-7-12.noarch.rpm.1
drwxr-----. 3 root root 19 Oct 25 2019 .pki
-rw-r--r--. 1 root root 129 Dec 28 2013 .tcshrc
-rw-------. 1 root root 4437 Oct 25 2019 .viminfo
查看目录属性信息,则需要额外添加一个-d参数
[root@xiaojuanmao etc]# ls -ld /etc
drwxr-xr-x. 81 root root 8192 Apr 25 2020 /etc
文本文件编辑命令
1. cat命令
cat命令用于查看纯文本文件(内容较少的),格式为“ cat [选项 ] [文件 ]”。
cat -n initial setup ks.cfg 加n参数可带行数查看
[root@xiaojuanmao ~]# cat -n anaconda-ks.cfg
1 #version=DEVEL
2 # System authorization information
3 auth --enableshadow --passalgo=sha512
4 repo --name="Server-HighAvailability" --baseurl=file:///run/install/repo/addons/HighAvailability
5 repo --name="Server-ResilientStorage" --baseurl=file:///run/install/repo/addons/ResilientStorage
6 # Use CDROM installation media
7 cdrom
8 # Use graphical install
9 graphical
10 # Run the Setup Agent on first boot
2. more命令
more命令用于查看纯文本文件(内容较多的),格式为“ more [选项 ]文件”。
more命令会在最下面使用百分比的形式来提示已经阅读了多少内容。可以使用空格键或回车键向下翻页
3. head命令
head命令用于查看纯文本文档的前 N行,格式为“ head [选项 ] [文件 ]”。
如查看前20行:head -n 20 [文件 ]
4. tail命令
tail命令用于查看纯文本文档的后 N行或持续刷新内容,格式为“ tail [选项 ] [文件 ]”。
如查看末尾20行:tail -n 20 [文件 ]
tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时
查看最新日志文件时特别有用,此时的命令格式为“ tail -f 文件名”:
5.tr命令
tr命令用于替换文本文件中的字符,格式为“ tr [原始字符 ] [目标字符 ]”。
想要快速地替换文本中的一些词汇,又或者把整个文本内容都进行替换,可以先使用 cat命令读取待处理的文本,然后通过管道符把这些文本内容传递给 tr命令进行替换操作
例如,把某个文本内容中的英文全部替换为大写:
[root@linuxprobe] cat anaconda ks.cfg | tr [a-z] [A-Z]
6. wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“ wc [参数 ] 文本”。
参数 | 作用 |
---|---|
- l | 只显示行数 |
-w | 只显示单词数 |
- c | 只显示字节数 |
在Linux系统中, passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个
用户,可以使用下面的命令来进行查询(此时系统里有22个用户)
[root@xiaojuanmao ~]# wc -l /etc/passwd
22 /etc/passwd
7.stat命令
stat命令用于查看文件的具体存储信息和时间等信息,格式为“ stat 文件名称”。
stat命令可以用于查看文件的存储信息和时间等信息,命令 stat anaconda-ks.cfg会显示出文件的三种时间状态: Access、 Modify、 Change。
这三种时间的区别修改时间( mtime)、文件权限或属性的更改时间( ctime)与文件的读取时间 (atime)
[root@xiaojuanmao ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1432 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 8409155 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2018-08-08 09:36:19.613357019 -0400
Modify: 2019-10-24 12:59:42.382023219 -0400
Change: 2019-10-24 12:59:42.382023219 -0400
Birth: -
8. cut命令
cut命令用于按“列”提取文本字符,格式为“ cut [参数 ] 文本”。
如果按列搜索,不仅要使用 -f参数来设置需要看的列数,还需要使用 -d参数来设置间隔符号。
passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出 passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:
[root@xiaojuanmao ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@xiaojuanmao ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
tss
postfix
sshd
chrony
apache
9. diff命令
diff命令用于比较多个文本文件的差异,格式为“ diff [参数 ] 文件”。
可以使用 --brief参数来确认两个文件是否不同,还可以使用 -c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。
例如,先使用 cat命令分别查看 diff_a.txt和 diff-b.txt文件的内容,然后进行比较:
[root@xiaojuanmao ~]# cat diff_a.txt
welcome to diffa.com
redhat certfied
123456
ABCDEFG
[root@xiaojuanmao ~]# cat diff_b.txt
welcome to diffb.com
redhat certfied
123456
abcdefg
[root@xiaojuanmao ~]# diff --brief diff_a.txt diff_b.txt
Files diff_a.txt and diff_b.txt differ
[root@xiaojuanmao ~]# diff -c diff_a.txt diff_b.txt
*** diff_a.txt 2020-04-26 05:03:16.396360710 -0400
--- diff_b.txt 2020-04-26 05:03:41.399575027 -0400
***************
*** 1,4 ****
! welcome to diffa.com
redhat certfied
123456
! ABCDEFG
--- 1,4 ----
! welcome to diffb.com
redhat certfied
123456
! abcdefg
文件目录管理命令
1. touch命令
touch命令用于创建空白文件或设置文件的时间,格式为“ touch [选项 ] [文件 ]”。
参数 | 作用 |
---|---|
-a | 仅修改“读取时间(atime” |
-m | 仅修改“修改时间(mtime” |
-d | 同时修改mtime和atime |
ls命令查看一个文件的修改时间,然后修改这个文件,最后再通过 touch命令把修改后的文件时间设置成修改 之前 的时间(通常是黑客入侵的操作):可以看见修改前的日期与修改后的日期不相同,用touch改变了ctime之后就与修改前的时间一致
[root@xiaojuanmao ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 1432 Oct 24 2019 anaconda-ks.cfg
[root@xiaojuanmao ~]# echo "xiaojuanmao's learn linux skills" >> anaconda-ks.cfg
[root@xiaojuanmao ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 1465 Apr 27 03:04 anaconda-ks.cfg
[root@xiaojuanmao ~]# touch -d "2019-10-24 " anaconda-ks.cfg
[root@xiaojuanmao ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 1465 Oct 24 2019 anaconda-ks.cfg
2. mkdir命令
mkdir命令用于创建空白的目录,格式为“ mkdir [选项 ] 目录”。
mkdir -p 可递归创建出具有嵌套叠层关系的文件目录。
[root@xiaojuanmao ~]# mkdir -p ~/a/b/c
[root@xiaojuanmao ~]# tree /root/a
/root/a
└── b
└── c
2 directories, 0 files
3. cp命令
cp命令用于复制文件或目录,格式为“ cp [选项 ] 源文件 目标文件”。
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr p、 d、 r为上述参数) |
touch创建一个名为 install.log的普通空白文件然后将其复制为一份名为x.log的备份文件,最后再使用 ls命令查看目录中的文件:
[root@xiaojuanmao ~]# touch install.log
[root@xiaojuanmao ~]# cp install.log x.log
[root@xiaojuanmao ~]# ls
install.log
x.log
4. mv命令
mv命令用于剪切文件或将文件重命名,格式为“ mv [选项 ] 源文件 [目标路径 |目标文件名 ]”。
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:
[root@xiaojuanmao ~]# mv x.log linux.log
[root@xiaojuanmao ~]# ls
install.log
linux.log
5.rm命令
rm命令用于删除文件或目录,格式为“== rm [选项 ] 文件==”。
rm -f 强制删除
rm -r 删除目录
[root@xiaojuanmao ~]# rm -f linux.log
[root@xiaojuanmao ~]# ls
6.dd命令
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“ dd [参数 ]”。
Linux系统中有一个名为 /dev/zero的设备文件,可以使用它作为 dd命令的输入文件,来生成一个指定大小的文件。
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
例如用dd命令从 /dev/zero设备文件中取出一个大小为 160MB的数据块,然后保存成名为 160 _file的文件。
[root@xiaojuanmao ~]# dd if=/dev/zero of=160_file count=1 bs=160M
1+0 records in
1+0 records out
167772160 bytes (168 MB) copied, 1.89248 s, 88.7 MB/s
dd命令的功能也绝不仅限于复制文件这么简单。如果您想把光驱设备中的光盘制作成 iso格式的镜像文件,在 Linux系统中可以直接使用 dd命令来压制出光盘镜像文件,将它 变成 一个可立即使用的 iso镜像:
[root@xiaojuanmao]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
7. file命令
file命令用于查看文件的类型,格式为“ file 文件名”
`[root@xiaojuanmao ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@xiaojuanmao ~]# file /dev/sda
/dev/sda: block special
打包压缩与搜索命令
1. tar命令
tar命令用于对文件进行打包压缩或解压,格式为“ tar [选项 ] [文件 ]”。
例如,以Gzip的方式创建一个压缩包名为etc.tar.gz,压缩/etc的内容,
[root@xiaojuanmao] tar -czvf etc.tar.gz /etc
2. grep命令
grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“ grep [选项 ] [文件 ]”。
两个最最常用的参数:
-n参数用来显示搜索到信息的行号;
-v参数用于反选信息(即没有包含关键词的所有信息行)
在Linux系统中, ,/etc/passwd文件是保存着所 有的用户信息,而一旦用户的登录终端被设置成 /sbin/nologin,则不再允许登录系统,因此可以使用 grep命令来查找出当前系统中不允许登录系统的所有用户信息:
[root@xiaojuanmao ~]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
。。。。。。。。。。。。。省略。。。。。。
3. find命令
find命令用于按照指定条件来查找文件,格式为“ find [查找路径 ] 寻找条件 操作”。
格式:find 路径 选项 参数 -exec 命令 {} ;
常用参数
-name 根据文件名查找
-iname 根据文件名查找,不区分大小写
-user 根据文件的所有者查找
-group 根据文件所有组查找
-size 根据文件大小查找 +表示大于,-表示小于,不加表示等于
-exec 二次处理, -exec参数后面跟的是 command 命令,它的终止是以“;”为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名
例如:RHCSA的考题
找出所有者是natasha的文件,并把他们拷贝到/root/findfiles目录
[root@xiaojuanmao ~]# find -user natasha;
./1111
./222
[root@xiaojuanmao ~]# find -user natasha -exec cp -rp {} /root/findfiles/ \;
[root@xiaojuanmao ~]# ll /root/findfiles/
total 0
drwxr-xr-x. 2 natasha root 6 Apr 27 05:12 1111
-rw-r--r--. 1 natasha root 0 Apr 27 05:12 222