Linux进程的后台运行



在了解三种进程后台运行的方式前,小编觉得有必要先简单讲解一下什么是进程。
PS: 本篇博客技术参考价值不大,只是类似随笔比较水,详细的知识点可以关注一下nohup命令的使用。

一. 什么是进程?

什么是进程?进程就是运行的程序。
例如我们在Windows系统中双击一个图标运行一个软件,其实这就是启动了若干了进程,只不过在Linux中是通过命令来操作程序的运行。
因此我们也可以对程序进行操作,列如运行程序,终止程序,查看程序的运行状态等。
那么我们如何产生1个进程呢?我们通常使用命令,命令对应程序,程序执行后就会产生相应的进程。
我们也可以把进程分为前台运行的进程后台运行的进程,列如在Linux中:
这些都是在前台中运行的进程,会在终端中占用终端的输入或者产生信息。

ls
pwd
sleep 1000

我们可以在命令后面添加一个&符号让进程在后台执行列如:

sleep 1000 &

这样运行的命令是不会占用终端或者在终端中输出信息的,也就是后台运行一个进程,对于每一个进程都有一个固定的pid,那么如何查看进程的pid呢?
这就涉及到了进程信息的查看,我们就需要借助 ps 命令,列如:

# 利用运行进程使用的命令中的关键字查询出进程的 pid
ps -ef | grep <keyword>
# 查看当前用户运行的全部进程
ps -ux

查询出来的信息一般第二列就是进程的pid了
在这里插入图片描述
我们也可以通过命令将对应pid的进程杀死:

// 使用 kill 命令来杀死进程
kill -9 <pid>
kill -15 <pid>

9 和 15 这两个数字的含义可以在终端输入 htop,然后按 F9 查看,每个数字对应了一种发送给进程的信号。
15 对应的是 SIGTERM,通知进程结束,不加参数时,如:kill pid 默认使用该信号终止进程。
9 对应的是 SIGKILL,强制终止进程。
所以我们也可以在 htop 界面中发送相应的信号来结束进程。
关于进程的介绍,这里就不过于详细的讲解了,有感兴趣的读者朋友可以找一些相关文章查阅。

二. 进程后台运行

命令开启进程后台运行的方式有三种:

  1. 第一种方式是在执行的命令后面添加 & 符号
  2. 第二种是利用 ctrl + z 和 bg 搭配
  3. 第三种是使用 nohup 的方式后台运行进程(常用)

第一种:

sleep 10086 &

第二种:

扫描二维码关注公众号,回复: 14780232 查看本文章
sleep 10010
# 按 ctrl + z
# 在终端输入 bg
bg 

第三种:

nohup sleep 1111 &

我们也可以使用下面的命令来查看后台运行的进程:

jobs -l

可以根据后台运行的进程编号将对应的进程转到前台来运行,编号可通过 jobs -l 命令查看

// 将 1 号后台运行的进程转到前台运行
fg 1
// 不指定编号,默认将编号最大的进程转到前台运行
fg

值得注意的是: 使用上文中的方式 1 和方式 2 运行的后台进程会在终端关闭后被杀死,而使用 nohup 运行的后台进程在终端关闭后而主机还在运行的情况下继续运行。
在让进程后台运行时,我们通常需要记录日志,用于了解进程的运行情况,比如运行 jupyter notebook 时,我们通常将日志输入到文件中:

nohup jupyter notebook 1>jupyter.log 2>&1 &

这里的 2 表示的是错误输出,1 表示的是标准输出,标准输出会输出到终端。上述的 2>&1 会将标准错误输出重定向标准输出(终端),1>jupyter.log会将标准输出中的内容重定向到 jupyter.log 文件中,这样进程输出的日志信息就全都记录在 jupyter.log 文件中了,查看 jupyter.log 文件中的内容,就能知道进程的运行状态了。

猜你喜欢

转载自blog.csdn.net/Siebert_Angers/article/details/128749475