【Linux】进程管理

简介: 【Linux】进程管理
  • ps:报告当前进程快照。
  • top:显示任务。
  • kill:给一个进程发送信号。
  • shutdown:关机或重启系统。

一个程序可以发动另一个程序被表述为一个父进程可以产生一个子进程,内核维护每个进程的信息,以此来保持事情有序,系统分配给每个进程一个数字,这 个数字叫做进程 (process) ID 或 PID。

查看进程

使用ps(process status)可以查看进程。TTY 是 “Teletype”(直译电传打字机) 的简写,是指进程的控制终端;TIME 字段表示进程所消耗的 CPU 时间数量。

# 默认列出与当前终端会话相关的进程
ps

进程状态,输出结果中,标题STAT,是state的简写。

  • R:运行中,这意味着,进程正在运行或准备运行。
  • S:正在睡眠。进程没有运行,而是,正在等待一个事件,比如 说,一个按键或者网络分组。
  • D:不可中断睡眠。进程正在等待 I/O,比方说,一个磁盘驱动器的 I/O。
  • T:已停止,已经指示进程停止运行。
  • Z:一个死进程或“僵尸”进程。这是一个已经终止的子进程, 但是它的父进程还没有清空它
  • <:一个高优先级进程。
  • N:低优先级进程。
# 展示所有进程
ps x
# 显示属于每个用户的进程信息
ps aux

使用top动态查看进程

虽然 ps 命令能够展示许多计算机运行状态的信息,但是它只是提供 ps 命令执行时刻的机器状

态快照。为了看到更多动态的信息,我们使用 top 命令。

top 命令以进程活动顺序显示连续更新的系统进程列表(默认情况下,每三秒钟更新一次)。top 显示结果由两部分组 成:最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。

top

上面的信息就类似于我们桌面的任务管理器,我们可以继续按q或者ctrl-c退出命令。

使用 kill 命令给进程发送信号

使用 kill 命令,可以指定我们想要终止的进程 PID。虽然这个命令看上去很直白,但是它的含义不止于此。这个 kill 命令不是真的“杀死”程 序,而是给程序发送信号。信号是操作系统与程序之间进行通信时所采用的几种方式中的一 种。在使用 Ctrl-c 和 Ctrl-z 的过程中我们已经看到信号的实际用法。当终端接受了其中一个 按键组合后,它会给在前端运行的程序发送一个信号。在使用 Ctrl-c 的情况下,会发送一个叫 做 INT(Interrupt, 中断)的信号;当使用 Ctrl-z 时,则发送一个叫做 TSTP(Terminal Stop, 终端停止)的信号。

kill [-signal] PID...

如果在命令行中没有指定信号,那么默认情况下,发送 TERM(Terminate,终止)信号,常见的一些信号如下:

  • 1 或 HUP:挂起。
  • 2 或 INT:中断。实现和 Ctrl-c 一样的功能,由终端发送,通常, 它会终止一个程序。
  • 9 或 KILL:杀死。当其它 终止信号失败后,再使用它。
  • 15 或 TERM:终止。这是 kill 命令发送的默认信号,如果程序仍然 “活着”,可以接受信号,那么这个它会终止。
  • 18 或 CONT:继续。在一个停止信号后,这个信号会恢复进程的运行。
  • 19 或 STOP:停止。这个信号导致进程停止运行,而不是终止。
  • 3 或 QUIT:退出。
  • 20 或 TSTP:终端停止。当按下 Ctrl-z 组合键后, 终端发送这个信号。

杀死进程

kill -9 13601

关机或重启系统

使用 shutdown 命令用于安全地关闭或重启。

常见的参数

  • -h:将系统的服务停掉之后关闭系统(常用)。
  • -r:将系统的服务停掉之后就重启系统(常用)。
  • -k:不是真的关机,只是发送警告消息出去。

关闭系统(关机)

# 立即关机
shutdown -h now
# 10min 关机
shutdown -h 10
# 10min后关闭系统,并发送一条消息给所有用户
shutdown -h 10 "System will be down for maintenance"

重启系统

# 立即重启
shutdown -r now
# 22:00 重启系统
shutdown -r 22:00

取消计划的关机或重启

# 取消之前计划的 shutdown 操作
shutdown -c

发送警告

# 仅发出警告消息,系统并不会关机
shutdown -k now 'this system will reboot'

相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
515 32
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
439 67
|
Web App开发 Linux 程序员
获取和理解Linux进程以及其PID的基础知识。
总的来说,理解Linux进程及其PID需要我们明白,进程就如同汽车,负责执行任务,而PID则是独特的车牌号,为我们提供了管理的便利。知道这个,我们就可以更好地理解和操作Linux系统,甚至通过对进程的有效管理,让系统运行得更加顺畅。
363 16
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
245 20
|
11月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
265 0
|
11月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
334 0
|
11月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
216 0
|
11月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
273 0
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
675 34