欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

10. ubuntu的实践——程序,开机关机,运行时间

程序员文章站 2022-07-10 08:24:13
...

12.Ps(Process Status)

在Linux系统中,ps(Process Status的缩写)命令常常用来用来列出系统中当前运行的进程。ps命令用来列出系统中当前运行的那些进程。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

12.1.Linux上进程有5种状态:

  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

12.1.1.ps工具标识进程的5种状态码:

  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • D 不可中断 uninterruptible sleep (usually IO)
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

12.2.ps 使用

用法:ps [ 参数 ]
ps命令有很多参数,具体如下:
(1)-A 显示所有进程(等价于-e)(utility)
(2)-a 显示一个终端的所有进程,除了会话引线
(3)-N 忽略选择。
(4)-d 显示所有进程,但省略所有的会话引线(utility)
(5)-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
(6)-p pid 进程使用cpu的时间
(7)-u uid or username 选择有效的用户id或者是用户名
(8)-g gid or groupname 显示组的所有进程。
(9)U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
(10)-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
(11)-l 长格式(有F,wchan,C 等字段)
(12)-j 作业格式
(13)-o 用户自定义格式。
(14)v 以虚拟存储器格式显示
(15)s 以信号格式显示
(16)-m 显示所有的线程
(17)-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
(18)e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
(19)h 不显示第一行
(20)–version 显示版本信息
(21)–help 显示帮助信息

12.3.常用ps命令

12.3.1.ps -aux

最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
10. ubuntu的实践——程序,开机关机,运行时间

列说明:
1)USER: 用户名
2)PID: 进程ID(Process ID)
3)%CPU: 进程的cpu占用率
4)%MEM: 进程的内存占用率
5)VSZ: 进程所使用的虚存的大小(Virtual Size)
6)RSS: 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节,resident set size。
7)TTY: 与进程关联的终端(tty)
8)STAT: 进程的状态:进程状态使用字符表示的(STAT的状态码)
9)TIME: 进程使用的总cpu时间
10)COMMAND: 正在执行的命令行命令

12.3.2.ps -axjf

树形显示进程,有时候我们希望以树形结构显示进程,可以使用 -axjf参数。
ps -axjf
10. ubuntu的实践——程序,开机关机,运行时间

或者可以使用另一个命令。
pstree
10. ubuntu的实践——程序,开机关机,运行时间

12.3.3.ps -ef

是用标准的格式显示进程的、其格式如下
10. ubuntu的实践——程序,开机关机,运行时间

列说明:
(1)UID: 用户ID(User ID)
(2)PID: 进程ID(Process ID)
(3)PPID: 父进程的进程ID(Parent Process id)
(4)STIME: 启动时间
(5)TTY: 与进程关联的终端(tty)
(6)TIME: 进程使用的总cpu时间
(7)CMD: 正在执行的命令行命令

12.3.4.ps -l

10. ubuntu的实践——程序,开机关机,运行时间

列说明:
(1)F: 代表这个程序的旗标 (flag)4 代表使用者为 super user
(2)S: 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
(3)UID: 用户ID(User ID)
(4)PID: 进程ID(Process ID)
(5)PPID: 父进程的进程ID(Parent Process id)
(6)C: CPU 使用的资源百分比
(7)PRI: 这个是 Priority (优先执行序) 的缩写,详细后面介绍
(8)NI: 这个是 Nice 值,在下一小节我们会持续介绍
(9)ADDR: 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-”
(10)SZ:使用掉的内存大小
(11)WCHAN: 目前这个程序是否正在运作当中,若为 - 表示正在运作
(12)TTY: 登入者的终端机位置
(13)TIME: 使用掉的 CPU 时间。
(14)CMD: 所下达的指令为何

12.3.5.显示所有当前进程

(1)、ps -ax
10. ubuntu的实践——程序,开机关机,运行时间

使用 -a参数,-a 代表 all。同时加上x参数会显示没有控制终端的进程。
(2)、ps -ax | less
10. ubuntu的实践——程序,开机关机,运行时间

这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。

12.3.6.通过cpu和内存使用来过滤进程

如果你想把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:
(1)、ps -aux | less
10. ubuntu的实践——程序,开机关机,运行时间

显示全面信息
当结果很长时,我们可以使用管道和less命令来筛选。
默认的结果集是未排好序的,可以通过 –sort命令来排序。
(2)、根据 CPU 使用来升序排序
$ ps -aux --sort -pcpu | less
10. ubuntu的实践——程序,开机关机,运行时间

根据cpu使用排序
(3)、根据内存使用来升序排序
$ ps -aux --sort -pmem | less
10. ubuntu的实践——程序,开机关机,运行时间

根据内存使用来排序
(4)、我们也可以将它们合并到一个命令,并通过管道显示前5个结果:
ps -aux --sort -pcpu,+pmem | head -n 5
10. ubuntu的实践——程序,开机关机,运行时间

13.linux开机,关机,重启

没有操作系统是完美的。 即使相对稳定,驱动程序和应用程序也可能存在问题。 Linux也不例外。 尽管比Windows更稳定(在许多情况下,并非全部!),但可能还需要重新启动Linux计算机。 这可能是因为某些东西不起作用。 或者,您可能通过SSH连接到远程计算机或服务器,并希望它重新启动或完全关闭。

但是你怎么做呢? 有几个命令可用于通过命令行关闭或重新启动(或重新启动)Linux计算机。

13.1.关机

如果您已经使用了Linux机器,那么简单地关闭它的解决方案就是使用通过SSH发送的关机指令(如果您使用的是Windows PC,那么您有几个SSH工具可供选择)。这可以用来永久关闭计算机(直到您决定重新启动它)或重新启动。该命令的语法如下:

shutdown [option] [time] [message]

例如,要立即关闭计算机,您将使用:

shutdown -h now

这里,-h表示暂停,而现在明确表示该指令应立即执行。 可以使用不同的延迟。 例如,您可以使用+9代替,这将告诉计算机在9分钟内运行关机程序。
如果你想包含一条信息,这条信息将会显示给所有已登录的用户:

aaa@qq.com:~/linuxidc.com$ shutdown -h +9 “服务器正在关闭,请保存您的工作并注销。”

Shutdown scheduled for Sun 2019-04-28 10:37:30 CST, use ‘shutdown -c’ to cancel.
10. ubuntu的实践——程序,开机关机,运行时间

请记住,您可以找到这些命令的开关的完整列表,输入:

[command] --help

用-r重新启动
另一种选择是使用-r命令重新启动计算机。 这用于代替-h,因此要重新启动计算机或服务器,您可以使用:

aaa@qq.com:~/linuxidc.com$ shutdown -h +3 “服务器将在在3分钟后重新启动, 请保存您的工作并注销。”

Shutdown scheduled for Sun 2019-04-28 10:49:38 CST, use ‘shutdown -c’ to cancel.
10. ubuntu的实践——程序,开机关机,运行时间

可以通过输入shutdown -c命令取消任何计划的关闭或重新启动:

aaa@qq.com:~/linuxidc.com$ shutdown -c

13.2.重新启动

由于shutdown命令具有重启选项,因此了解reboot命令有关闭选项也就不足为奇了。
标准的重启命令是:
reboot
这将提示您的计算机自动关闭,然后再重新打开。然而,如果你想关掉设备,那么-p开关将工作:
reboot -p
另一种选择是强制重启。如果应用程序或服务正在挂起,而您需要快速重启,这将非常有用:
reboot -f
这将强制重新启动Linux机器。

13.3.Halt

我们已经看到了上面的-h开关,但是halt可以单独用作命令。这将导致计算机立即关闭,用一个简单的四个字母单词:
halt
-f 开关也可以用于暂停,但结果不一致,并且可能导致系统稳定性问题。

13.4.定时关机

您可能更喜欢poweroff命令的术语。这与halt完全相同,只是它需要两倍的输入时间。
但是,除了使用-f强制关机外,还可以使用-w开关将系统重启调用记录到/var/log/wtmp。这是一个潜在有用的调试工具,就像-verbose一样,它可以帮助解决关机问题。
poweroff --verbose

13.5.-紧急选项:REISUB

当系统运行正常时,可以使用上面的所有命令。但如果它崩溃了呢?如果PC或服务器正在挂起,无法以合适的方式重新启动,该怎么办?
答案就是键盘组合。如果您已从Windows切换,您可能知道Ctrl + Alt + Del会显示一个菜单,其中包含Shutdown作为选项。如果保持更长时间,机器将自动关闭。同时,在Mac上,您只需按住电源按钮(也适用于Windows硬件的选项)。
在Linux中,键盘组合为Alt + Print Screen + B以重新启动。 但是,如果这不起作用,或者存在更复杂的问题,则可以使用最多六个键来更改组合。

  • 这就是所谓的REISUB,是取以下词语的缩略语:
  • unRaw - 从X显示服务器控制键盘。
  • tErminate - 将终止信号SIGTERM发送到所有进程,以便正常终止。
  • kIll - 如上所述,但SIGKILL信号强制立即终止进程。
  • Sync - 将数据刷新到磁盘。
  • Unmount- 这会将所有文件系统重新装入只读状态。
  • reBoot - 正如您所期望的那样。

要使其起作用,您应按下Alt + Print Screen,然后按顺序按下R E I S U B键。 在每个按键之间留一两秒。 请注意,此方法通常不适用于具有ARM体系结构的计算机(例如Raspberry Pi)。
救命,我不小心关闭了我的Linux PC或服务器!
我们已经了解了如何取消关机或重启命令。然而,当一个重要的进程正在运行时,您很容易启动shutdown命令——尤其是在远程服务器上。解决这个问题的一种方法是安装molly-guard,它可以通过检查某些参数来覆盖关机。
例如,有一个脚本检查SSH会话(与FTP不同)。如果您发送重新启动、停止、关机或关机命令,molly-guard将要求您要关闭的主机的名称。
要使用它,请在终端中安装molly-guard:
aaa@qq.com:~/linuxidc.com$ sudo apt-get install molly-guard
10. ubuntu的实践——程序,开机关机,运行时间

当molly-guard在后台运行时,它将检测诸如poweroff之类的命令,并报告已检测到SSH会话。 然后,您可以选择输入服务器的主机名以确认关闭,或者按Ctrl + C取消。 有用!
从命令行关闭Linux计算机的这五种方法特别有用,因为它们可以在计算机本身上使用,也可以通过远程SSH使用。 由于这些命令非常简洁,因此可以快速使用 - 这可能会导致意外重启! 幸运的是,molly-guard实用程序足以避免这种情况。

14.获取启动时间和正常运行时间

作为Ubuntu系统管理员,您可能想知道系统何时运行。 如果要对电源进行故障排除或安排相关问题,这将特别有用。 虽然有许多开源应用程序可以为此安装和使用,但Ubuntu的“uptime”命令是最简单的使用并提供准确的结果。
那么我们如何在Ubuntu上获得准确的启动时间和系统正常运行时间? 本文介绍了uptime命令用于实现此任务的用法。
我们在Ubuntu 18.04 LTS系统上运行命令。
您可以通过系统Dash或Ctrl + Alt + T快捷方式打开终端应用程序。

aaa@qq.com:~/umake$ uptime -h
10. ubuntu的实践——程序,开机关机,运行时间

用法:
uptime [选项]
选项:
 -p, --pretty show uptime in pretty format
 -h, --help 显示此帮助然后离开
 -s, --since system up since
 -V, --version 显示程序版本然后离开

(1)检查正常运行时间和启动时间
运行以下命令以查看自Ubuntu系统启动和运行(正常运行时间)以来的持续时间:
aaa@qq.com:~/umake$ uptime -p
10. ubuntu的实践——程序,开机关机,运行时间

(2)输出显示时间,以小时和分钟为单位,以及是否有2个或更多用户登录。
运行以下命令以查看系统引导的时间(引导时间):
aaa@qq.com:~/umake$ uptime -s
10. ubuntu的实践——程序,开机关机,运行时间

(3)输出显示系统引导的日期和时间。
另外还有一个参数 -V(大写),是用来查询版本的。
aaa@qq.com:~/umake$ uptime -V

10. ubuntu的实践——程序,开机关机,运行时间

相关标签: Ubuntu