1. 前台运行

1.1 运行

直接输入"./可执行文件"运行,例如

./a.out
./r.sh

1.2 终止

在程序运行的过程中可以直接按 Ctrl + C 终止运行,或者关闭终端终止运行。

2. 后台运行

2.1 使用 & 

./a.out &

运行后:

  • 程序在后台运行,可以在终端输入其它命令,但是结果会输出到终端
  • 使用 Ctrl + C 发送 SIGINT 信号并不能终止程序运行
  • 直接关闭终端发送 SIGHUP 信号可以终止程序运行

2.2 使用 nohup

nohup ./a.out

运行后:

  • 程序在后运行,结果默认输出到 nohup.out 文件之中
  • 使用 Ctrl + C 可以终止程序运行
  • 关闭终端不能终止程序运行

2.3 nohup + &

nohup ./a.out &

一般情况下可以两者结合使用,时程序在后台运行,结果输出到 nohup.out 文件之中,且不能关闭终端,或使用 Ctrl + C后依然能正常运行。

3. 前后台切换,任务暂停,终止,继续运行

3.1 前台程序终止:Ctrl + C

3.2 前台程序放到后台并暂停:Ctrl + Z

3.3 将一个后台的程序调至前台运行(无论后台的程序暂停与否)

fg

如果后台有多个程序,可以使用 :

fg %jobnumber 

( jobnumber 可以输入jobs 回车查看)

3.4 将一个后台暂停的程序继续执行:

bg

如有多个后台暂停的程序,方法同 3.3

tips: Ctrl + Z +bg 可以使前台运行的程序转至后台运行

3.5 后台程序的暂停:

kill -stop PID

(PID 可以输入 ps 回车 查看)

3.6 后台程序的终止:

kill %jobnumber
kill PID

4. 查看正在运行的程序

4.1 动态运行情况查看:

top
htop

(htop 需额外安装)

4.2 ps命令查看正在运行的程序

4.2.1 直接输入 ps 回车 只能查看在当前终端运行的命令和程序,如果想查看所有的运行中的运行程序,应加上参数:

ps -aux

4.2.2 ps命令的其它参数的解释:

a  显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c  显示进程的真实名称
-N 反向选择
-e 等于“-A”
e  显示环境变量
f  显示程序间的关系
-H 显示树状结构
r  显示当前终端的进程
T  显示当前终端的所有程序
u  指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程 
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示

4.2.3 ps -aux 与 ps -ef 的区别

ps -ef 是用标准的格式显示进程的,显示的各列的意思:

UID    //用户ID、但输出的是用户名 
PID    //进程的ID 
PPID    //父进程ID 
C      //进程占用CPU的百分比 
STIME  //进程启动到现在的时间 
TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
CMD    //命令的名称和参数

ps aux 是用BSD的格式来显示,显示的各列的意思:

USER      //用户名 
%CPU      //进程占用的CPU百分比 
%MEM      //占用内存的百分比 
VSZ      //该进程使用的虚拟內存量(KB) 
RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 
STAT      //进程的状态 
START    //该进程被触发启动时间 
TIME      //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有
D      //无法中断的休眠状态(通常 IO 的进程); 
R      //正在运行可中在队列中可过行的; 
S      //处于休眠状态; 
T      //停止或被追踪; 
W      //进入内存交换 (从内核2.6开始无效); 
X      //死掉的进程 (基本很少见); 
Z      //僵尸进程; 
<      //优先级高的进程 
N      //优先级较低的进程 
L      //有些页被锁进内存; 
s      //进程的领导者(在它之下有子进程); 
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+      //位于后台的进程组;

4.3 通过 jobs 命令查看程序进程:

只能查看到当前终端的运行的程序进程。

5. 查看正在运行的程序所在的路径/文件夹

先进入到 "/proc" 文件中,然后通过“ps”命令查找到自己想要查看的程序的PID,如果当前运行的程序太多,可以结合 grep 命令进行筛选:

ps -aus | grep a.out

然后输入

ll PID

参考资料:

1. Linux下ps命令

2. LINUX进程ps -ef和ps -aux的区别及格式详解

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐