常用系统工作命令#yyds干货盘点#

Posted toplabs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用系统工作命令#yyds干货盘点#相关的知识,希望对你有一定的参考价值。

1 常用系统工作命令

1.1 echo命令

echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:echo [字符串] [$变量]

这是在Linux系统中最常用的几个命令之一,但操作却非常简单,执行echo 字符串echo $变量就行,其中$​符号意思是提取变量的实际值,以便后续的输出操作。

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

[root@linux ~] echo linux.com

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

linux.com

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

[root@linux ~] echo $SHELL
/bin/bash

1.2 date命令

date命令用于显示或设置系统的时间与日期。

语法格式: date [+指定的格式]

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

常见参数:

参数 作用
%S 秒(00~59)
%M 分钟(00~59)
%H 小时(00~23)
%I 小时(00~12)
%m 月份(1~12)
%p 显示出AM或PM
%a 缩写的工作日名称(例如:Sun)
%A 完整的工作日名称(例如:Sunday)
%b 缩写的月份名称(例如:Jan)
%B 完整的月份名称(例如:January)
%q 季度(1~4)
%y 简写年份(例如:20)
%Y 完整年份(例如:2020)
%d 本月中的第几天
%j 今年中的第几天
%n 换行符(相当于按下回车键)
%t 跳格(相当于按下Tab键)

参考实例:

  1. 按照默认格式查看当前系统时间的date命令如下所示:
[root@linux ~] date
Sat Sep 5 09:13:45 CST 2020
  1. 按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:
[root@linux ~] date "+%Y-%m-%d %H:%M:%S"
2020-09-05 09:14:35
  1. 将系统的当前时间设置为2020年11月1日8点30分的date命令如下所示:
[root@linux ~] date -s "20201101 8:30:00"
Sun Nov 1 08:30:00 CST 2020
  1. 再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:
[root@linux ~] date
Sun Nov 1 08:30:08 CST 2020
  1. date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示:
[root@linux ~] date "+%j"
306

1.3 timedatectl命令

timedatectl命令用于设置系统的时间,英文全称为: "time date control"。

语法格式: timedatectl [参数]

发现电脑时间跟实际不符?如果只差几分钟的话,我们可以直接调整,但如果差几个小时,那么除了调整当前的时间,还有必要检查下时区了,timedatectl命令中常见的参数格式及作用如下表所示。

常见参数:

参数 作用
status 显示状态信息
list-timezones 列出已知时区
set-time 设置系统时间
set-timezone 设置生效时区

参考实例:

  1. 查看系统时间与时区:
[root@linux ~] timedatectl status
               Local time: 三 2021-07-21 16:42:46 CST
           Universal time: 三 2021-07-21 08:42:46 UTC
                 RTC time: 三 2021-07-21 08:42:47
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
  1. 如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
[root@linux ~] timedatectl set-timezone Asia/Shanghai
  1. 如果时间还是不正确,再手动的修改系统日期:
[root@linux ~] timedatectl set-time 2021-05-18
  1. 而如果想修改时间的话,也很简单:
[root@linux ~] timedatectl set-time 9:30
[root@linux ~] date
Tue May 18 09:30:01 CST 2021

1.4 reboot命令

reboot命令用于重启系统,输入后回车执行即可。

由于重启计算机这种操作会涉及硬件资源的管理权限,因此最好使用root管理员来重启,普通用户可能会被拒绝,其命令如下:

[root@linux ~] reboot

1.5 poweroff命令

poweroff命令用于关闭系统,输入后回车执行即可。

与上面相同,该命令也会涉及到硬件资源的管理权限,因此最好还是用root管理员来关闭电脑,其命令如下:

[root@linux ~] poweroff

1.6 wget命令

wget命令用于在终端命令行里下载网络文件,英文全称为:"web get"。

语法格式: wget [参数] 网址

无需打开浏览器,直接在命令界面就能下载文件,但如果您没有Linux系统的管理经验,当前只需了解一下wget命令的参数以及作用,然后看一眼下面的演示实验就够了,切记不要急于求成。后面章节将逐步讲解Linux系统的配置管理方法,可以等掌握了网卡的配置方法后再来进行这个实验操作。下表所示为wget命令的参数以及参数的作用。

常见参数:

参数 作用
-b 后台下载模式
-P 下载到指定目录
-t 最大尝试次数
-c 断点续传
-p 下载页面内所有资源,包括图片、视频等
-r 递归下载

参考实例:

尝试使用wget命令从本书的配套站点中下载最新pdf格式电子文档,执行命令后的下载效果如下:

[root@linux ~] wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
--2021-07-21 16:59:26--  https://www.linuxprobe.com/docs/LinuxProbe.pdf
正在解析主机 www.linuxprobe.com (www.linuxprobe.com)... 120.192.89.145
正在连接 www.linuxprobe.com (www.linuxprobe.com)|120.192.89.145|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 17676281 (17M) [application/pdf]
正在保存至: “LinuxProbe.pdf”

LinuxProbe.pdf                       100%[=====================================================================>]  16.86M  1.05MB/s    用时 16s

2021-07-21 16:59:43 (1.03 MB/s) - 已保存 “LinuxProbe.pdf” [17676281/17676281])

接下来,使用wget命令递归下载www.linuxprobe.com网站内的所有页面数据以及文件,下载完后会自动保存到当前路径下一个名为www.linuxprobe.com的目录中,该命令的执行结果如下:

[root@linux ~] wget -r -p https://www.linuxprobe.com
--2021-07-21 17:01:20--  https://www.linuxprobe.com/
正在解析主机 www.linuxprobe.com (www.linuxprobe.com)... 120.192.89.145
正在连接 www.linuxprobe.com (www.linuxprobe.com)|120.192.89.145|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 未指定 [text/html]
正在保存至: “www.linuxprobe.com/index.html”
………………省略下载过程………………

1.7 ps命令

ps命令用于查看系统中的进程状态,英文全称为:"processes"。

语法格式: ps [参数]

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

常见参数:

参数 作用
-a 显示所有进程(包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程

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

除了上面的五种常见进程状态,还有可能是高优先级(<),低优先级(N),被锁进内存(L),包含子进程(s)以及多线程(l)这五种补充形式。

当执行“ps aux”命令后通常会看到如表2-8所示的进程状态,下面只是列举了部分输出值,而且正常的输出值中不包括中文注释:

进程状态:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的所有者 进程ID号 运算器占用率 内存占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数
root 1 0.0 0.5 244740 10636 ? Ss 07:54 0:02 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 07:54 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 07:54 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 07:54 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 07:54 0:00 [kworker/0:0H-kbl
root 6 0.0 0.0 0 0 ? I< 07:54 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S 07:54 0:00 [ksoftirqd/0]
root 8 0.0 0.0 0 0 ? I 07:54 0:00 [rcu_sched]
root 9 0.0 0.0 0 0 ? S 07:54 0:00 [migration/0]
……………… 省略部分输出信息 ………………

Tips

1.8 pstree命令

pstree命令用于以树状图的形式展示进程之间的关系,英文全称为: "process tree",输入后回车执行即可。

相信我们也发现了ps命令的致命伤,就是信息量太大又没有规律,给人看一眼就不想再看的感觉。如果想让进程以树状图的形式,有层次的展示出进程之间的关系,则可以使用pstree命令:

[root@linux ~] pstree
systemd─┬─ModemManager───2*[ModemManager]
        ├─NetworkManager───2*[NetworkManager]
        ├─accounts-daemon───2*[accounts-daemon]
        ├─acpid
        ├─at-spi-bus-laun─┬─dbus-daemon
        │                 └─3*[at-spi-bus-laun]
        ├─at-spi2-registr───2*[at-spi2-registr]
        ├─avahi-daemon───avahi-daemon
        ├─colord───2*[colord]
        ├─cron
        ├─cups-browsed───2*[cups-browsed]
        ├─cupsd
        ├─dbus-daemon
        ├─fwupd───4*[fwupd]
        ├─gdm3─┬─gdm-session-wor─┬─gdm-x-session─┬─Xorg───Xorg
                           ………………省略部分输出信息………………

1.9 top命令

top命令用于动态地监视进程活动及系统负载等信息,输入后回车执行即可。

上面命令都是静态的查看系统状态,不能实时滚动最新数据,而top命令就能够动态地查看系统状态,完全可以将它看作是Linux中的“强化版的Windows任务管理器”,是相当好用的性能分析工具,top命令的运行界面如下所示。

top - 17:42:26 up  6:55,  2 users,  load average: 0.00, 0.00, 0.00
任务: 224 total,   1 running, 223 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   6494.4 total,   2491.0 free,   1002.9 used,   3000.5 buff/cache
MiB Swap:   2048.0 total,   2035.2 free,     12.8 used.   5182.3 avail Mem

 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND
   6883 ityanger  20   0   20664   4008   3204 R   0.3   0.1   0:00.01 top
      1 root      20   0  168812  12500   8376 S   0.0   0.2   0:02.45 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     10 root      20   0       0      0      0 S   0.0   0.0   0:00.36 ksoftirqd/0
     11 root      20   0       0      0      0 I   0.0   0.0   0:00.84 rcu_sched
     12 root      rt   0       0      0      0 S   0.0   0.0   0:00.15 migration/0
     13 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs
     16 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
     17 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_kthre
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace
     20 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd
     21 root      20   0       0      0      0 S   0.0   0.0   0:00.01 khungtaskd
     22 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper
     23 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback
     24 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kcompactd0
     25 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd
     26 root      39  19       0      0      0 S   0.0   0.0   0:00.00 khugepaged
     72 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kintegrityd
     73 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kblockd
     74 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 blkcg_punt_bio
     75 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 tpm_dev_wq
     76 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 ata_sff
     77 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 md
     78 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 edac-poller
     79 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 devfreq_wq
     80 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdogd
     82 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 pm_wq

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

1.10 nice命令

nice命令用于调整进程的优先级。

语法格式: nice 优先级数字 服务名称

上面top命令输出结果中的PR和NI值代表的是进程的优先级,数字越低(取值范围是-20到19)、优先级越高。日常生产工作中,可以将一些不重要的进程的优先级调低、让紧迫的服务更多的利用CPU和内存资源,合理分配系统资源。例如将bash服务的优先级调整到最高:

[root@linux ~] nice -n -20 bash
[root@linux ~]

1.11 pidof命令

pidof命令用于查询某个指定服务进程的PID号码值。

语法格式: pidof [参数] 服务名称

每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程,来查询本机上sshd服务程序的PID:

[root@linux ~] pidof sshd
2156

1.12 kill命令

kill命令用于终止某个指定PID值的服务进程。

语法格式: kill [参数] 进程的PID

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

[root@linux ~] kill 2156

但也有时候会提示进程无法被终止,则可以加参数-9,代表最高级别的强制杀死进程:

[root@linux ~] kill -9 2156

1.13 killall命令

killall命令用于终止某个指定名称的服务所对应的全部进程。

语法格式: killall [参数] 服务名称

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

[root@linux ~] pidof httpd
13581 13580 13579 13578 13577 13576
[root@linux ~] killall httpd
[root@linux ~] pidof httpd

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

以上是关于常用系统工作命令#yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#常用的 Linux 系统备份恢复命令

常用Git命令总结#yyds干货盘点#

#yyds干货盘点#Linux基本命令练习

Linux | Linux常用指令学习笔记 #yyds干货盘点#

#yyds干货盘点#Linux之文档编辑命令

#yyds干货盘点#iptables常用命令