Linux 常用的系统工作命令

时间:2022-03-03 09:37:02

 1、echo 命令

echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。

例如,把指定字符串“Linuxprobe.com”输出到终端屏幕的命令为:

[root@linuxprobe ~]# echo Linuxprobe.Com

该命令会在终端屏幕上显示如下信息:

Linuxprobe.Com 

下面,我们使用$变量的方式提取变量SHELL的值,并将其输出到屏幕上:

[root@linuxprobe ~]# echo $SHELL

/bin/bash

 2、date 命令

date命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。

只需在强大的date命令中输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年-月-日”的格式打包成“backup-2017-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了解到每个文件的备份时间了。date命令中常见的参数格式及作用如表1 所示。

表1 date命令中的参数以及作用

参数

作用

%t

跳格[Tab键]

%H

小时(00~23)

%I

小时(00~12)

%M

分钟(00~59)

%S

秒(00~59)

%j

今年中的第几天


按照默认格式查看当前系统时间的date命令如下所示:

[root@linuxprobe ~]# date
Sat Aug  4 22:25:46 EDT 2018

按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:

[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2018-08-04 22:28:50
[root@linuxprobe ~]# date "+%Y-%m-%d %I:%M:%S"
2018-08-04 10:29:11

将系统的当前时间设置为2018年8月5日10点30分的date命令如下所示:

[root@linuxprobe ~]# date -s "20180805 10:30:00"
Sun Aug  5 10:30:00 EDT 2018

再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:

[root@linuxprobe ~]# date
Sun Aug  5 10:30:09 EDT 2018 

date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示。

[root@linuxprobe ~]# date "+%j"
217

3、reboot 命令

reboot命令用于重启系统,其格式为reboot。

由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启,其命令如下:

[root@linuxprobe ~]# reboot

4、poweroff 命令

poweroff命令用于关闭系统,其格式为poweroff。

该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑,其命令如下:

[root@linuxprobe ~]# poweroff

5、wget 命令

wget命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”,表2 所示为wget命令的参数以及参数的作用。

表2 wget命令的参数以及作用

参数

作用

-b

后台下载模式

-P

下载到指定目录

-t

最大尝试次数

-c

断点续传

-p

下载页面内所有资源,包括图片、视频等

-r

递归下载

 

尝试使用wget命令下载最新的Python3.7文档,这个文件的完整路径为https://docs.python.org/3/archives/python-3.7.0-docs-pdf-letter.tar.bz2,执行该命令后的下载效果如下:

[root@linuxprobe ~]# wget https://docs.python.org/3/archives/python-3.7.0-docs-pdf-letter.tar.bz2
--2018-08-05 07:51:25--  https://docs.python.org/3/archives/python-3.7.0-docs-pdf-letter.tar.bz2 Resolving docs.python.org (docs.python.org)... 151.101.72.223, 2a04:4e42:36::223 Connecting to docs.python.org (docs.python.org)|151.101.72.223|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 13984044 (13M) [application/octet-stream] Saving to: ‘python-3.7.0-docs-pdf-letter.tar.bz2’ 100%[======================================>] 13,984,044   864KB/s   in 17s 2018-08-05 07:51:43 (804 KB/s) - ‘python-3.7.0-docs-pdf-letter.tar.bz2’ saved [13984044/13984044] [root@linuxprobe ~]# 

接下来,我们使用wget命令递归下载https://docs.python.org网站内的所有页面数据以及文件,下载完后会自动保存到当前路径下一个名为docs.python.org的目录中。执行该操作的命令为wget -r -p https://docs.python.org,该命令的执行结果如下。

[root@linuxprobe ~]# wget -r -p https://docs.python.org
--2018-08-05 08:00:01--  https://docs.python.org/
Resolving docs.python.org (docs.python.org)... 151.101.72.223, 2a04:4e42:36::223
Connecting to docs.python.org (docs.python.org)|151.101.72.223|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://docs.python.org/3/ [following]
--2018-08-05 08:00:02--  https://docs.python.org/3/
Reusing existing connection to docs.python.org:443.
HTTP request sent, awaiting response... 200 OK
Length: 9875 (9.6K) [text/html]
Saving to: ‘docs.python.org/index.html’

100%[======================================>] 9,875       --.-K/s   in 0.001s  

2018-08-05 08:00:02 (17.0 MB/s) - ‘docs.python.org/index.html’ saved [9875/9875]

Loading robots.txt; please ignore errors.
--2018-08-05 08:00:02--  https://docs.python.org/robots.txt
Reusing existing connection to docs.python.org:443.
HTTP request sent, awaiting response... 200 OK
Length: 129 [text/plain]
Saving to: ‘docs.python.org/robots.txt’

100%[======================================>] 129         --.-K/s   in 0s      

2018-08-05 08:00:02 (13.0 MB/s) - ‘docs.python.org/robots.txt’ saved [129/129]
....................省略下载过程....................

6、ps 命令

ps 命令用于查看系统中的进程状态,格式为“ps [参数]”。

估计读者在第一次执行这个命令时都要惊呆一下—怎么会有这么多输出值,这可怎么看得过来?其实,我们通常会将ps命令与管道符技术搭配使用,用来抓取与某个指定服务进程相对应的PID号码。ps命令的常见参数以及作用如表3 所示。

表3 ps命令的参数以及作用

参数

作用

-a

显示所有进程(包括其他用户的进程)

-u

用户以及其他详细信息

-x

显示没有控制终端的进程

 

Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。

  • R(运行):进程正在运行或在运行队列中等待。
  • S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该   状态。
  • D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
  • Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
  • T(停止):进程收到停止信号后停止运行。

当执行ps aux命令后通常会看到如表7 所示的进程状态,表4 中只是列举了部分输出值,而且正常的输出值中不包括中文注释。

表 4  进程状态

USER

PID

%CPU

%MEM

VSZ

RSS

TTY

STAT

START

TIME

COMMAND

进程的所有者

进程ID号

运算器占用率

内存占用率

虚拟内存使用量(单位是KB)

占用的固定内存量(单位是KB)

所在终端

进程

状态

被启动

的时间

实际使用
CPU的时间

命令名称与参数

root

1

0.0

0.4

53684

7628

?

Ss

07 :22

0:02

/usr/lib/systemd/systemd

root

2

0.0

0.0

0

0

?

S

07:22

0:00

[kthreadd]

root

3

0.0

0.0

0

0

?

S

07:22

0:00

[ksoftirqd/0]

root

5

0.0

0.0

0

0

?

S<

07:22

0:00

[kworker/0:0H]

root

7

0.0

0.0

0

0

?

S

07:22

0:00

[migration/0]

………………省略部分输出信息………………

 

注:如前面所提到的,在Linux系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个-(减号)即可。另外ps命令可允许参数不加减号(-),因此可直接写成ps aux的样子。

7、top 命令

top命令用于动态地监视进程活动与系统负载等信息,其格式为 top。

top命令相当强大,能够动态地查看系统运维状态,完全将它看作Linux中的“强化版的Windows任务管理器”。top命令的运行界面如图 1 所示:

Linux 常用的系统工作命令

图 1  top命令的运行界面

在图1中,top命令执行结果的前5行为系统整体的统计信息,其所代表的含义如下。

  • 第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
  • 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
  • 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
  • 第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
  • 第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

注:第3行中的数据均为CPU数据并以百分比格式显示,例如“54.0 id”意味着有54.0%的CPU处理器资源处于空闲。

8、pidof 命令

pidof命令用于查询某个指定服务进程的PID值,格式为“pidof [参数] [服务名称]”。

每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。例如,可以使用如下命令来查询本机上sshd服务程序的PID:

[root@linuxprobe ~]# pidof sshd
1657

9、kill 命令

kill命令用于终止某个指定PID的服务进程,格式为“kill [参数] [进程PID]”。

接下来,我们使用kill命令把上面用pidof命令查询到的PID所代表的进程终止掉,其命令如下所示。这种操作的效果等同于强制停止sshd服务。

[root@linuxprobe ~]# kill 1657

10、killall 命令

killall命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [服务名称]”。

通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程。下面以httpd服务程序为例,来结束其全部进程。由于RHEL7系统默认没有安装httpd服务程序,因此大家此时只需看操作过程和输出结果即可,等学习了相关内容之后再来实践。

[root@linuxprobe ~]# pidof httpd

13581 13580 13579 13578 13577 13576

[root@linuxprobe ~]# killall httpd
 [root@linuxprobe ~]# pidof httpd  [root@linuxprobe ~]# 

注:如果我们在系统终端中执行一个命令后想立即停止它,可以同时按下Ctrl + C组合键(生产环境中比较常用的一个快捷键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行。