高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务

这篇具有很好参考价值的文章主要介绍了高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务

一、nohup命令详解

1-1、nohup命令介绍

nohup:nohup是“no hangup”的缩写,用于在后台不挂断的运行命令,使其在用户退出或终端关闭时不受影响。它通过忽略挂断(SIGHUP)信号实现这一功能。换句话说,nohup 是一条 Unix 命令,用于在后台执行程序,即使当前终端会话已经关闭或者断开,程序也可以继续运行。nohup 命令的使用非常简单,只需要在要执行的命令前加上 nohup 和 & 符号即可。

1-2、语法格式

1-2-1、基础语法介绍

nohup 命令的语法如下

nohup command [arg...] &

# 其中,command 表示要在后台执行的命令或进程,arg 表示命令或进程的参数,& 符号表示将命令或进程放到后台执行。

注意:nohup 命令的执行结果会输出到当前目录下的 nohup.out 文件中。如果要将命令或进程的输出重定向到其他文件中,可以使用重定向符号(>)指定输出文件的路径。例如:

nohup command [arg...] > output_file &

1-2-2、执行脚本文件

在执行 nohup 命令时,如果 command 是一个脚本文件,那么需要给该脚本文件添加可执行权限(chmod +x script.sh)。否则,会提示 “no such file or directory” 的错误。添加执行权限后执行nohup 命令

nohup sh filename.sh &

1-2-3、执行python文件

执行python文件: nohup 命令通常用于长时间运行的任务,例如在服务器上运行后台进程或者执行需要花费较长时间的脚本。在使用 nohup 命令时,建议将程序的输出重定向到一个日志文件中,以便后续查看程序的运行情况。

例如,要在后台执行一个 Python 脚本,并将输出重定向到一个日志文件中,可以使用以下命令:

nohup python my_script.py > my_script.log &

这将在后台执行 my_script.py 脚本,并将输出重定向到 my_script.log 文件中。如果当前终端会话已经关闭或者断开,my_script.py 仍将继续在后台运行,并将输出写入到 my_script.log 文件中。

1-2-4、拓展延申:在服务器上运行后台进程

拓展延申:nohup 命令的一个常见用途是在服务器上运行后台进程,例如 Web 服务器、数据库服务器等。在执行这些服务时,可以使用 nohup 命令将服务放到后台运行,并将输出重定向到日志文件中。

例如,在 Linux 系统上,要在后台启动一个 Apache Web 服务器,并将输出重定向到日志文件中,可以使用以下命令:

nohup /usr/local/apache2/bin/httpd -k start > /var/log/httpd.log &
这将在后台启动 Apache Web 服务器,并将输出重定向到 /var/log/httpd.log 文件中。

需要注意的是,nohup 命令并不是万能的,它不能保证被执行的命令或进程一定会一直运行。如果命令或进程本身存在问题或异常,仍然可能会被终止或崩溃。因此,在使用 nohup 命令时,仍需要对被执行的命令或进程进行监控和管理。

1-2-5、nohup和&的区别

&:是指在后台运行,当用户退出(挂起)的时候,命令自动跟着结束

nohup:不挂断的运行,注意并没有后台运行的功能,就是指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行, 使用nohup后关闭了标准输入,终端不能再接受任何输入。

因此将nohup和&结合使用,就可以实现使命令永久地在后台执行的功能,结合使用后,终端可以接受任何输入。

二、进程查看

2-1、jobs命令(基本不用)

jobs命令:jobs命令用于查看当前会话中的后台任务。它只能显示当前终端中的后台进程,即与当前会话关联的进程。一些常用的jobs参数如下:

  • -l:列出进程ID以及任务状态
  • -n:仅列出状态发生变化的任务
  • -r:仅列出正在运行的任务
  • -s:仅列出已停止的任务

例如,使用jobs -l命令可以查看当前会话中的后台任务及其进程ID。

2-2、ps命令

ps命令:ps命令用于报告当前系统的进程状态。与jobs命令不同,ps可以显示所有用户的进程信息,而不仅仅是当前会话。一些常用的ps参数如下:

  • -A:显示所有进程
  • -u:按用户显示进程,显示进程的详细信息,包括用户、进程号、CPU 占用、内存占用等信息。
  • -x:显示无控制终端的进程
  • -e:显示环境变量
  • -aux: 显示所有进程的详细信息,包括用户、进程号、占用 CPU 和内存等信息。(一般直接使用aux就可以)

例如,使用ps -A命令可以查看系统中的所有进程。要查找特定进程,可以将输出通过管道传递给grep命令,如ps -A | grep my_script.sh。
linux 查看后台进程,Linux,linux,unix,服务器
linux 查看后台进程,Linux,linux,unix,服务器

2-3、top命令

top命令:top命令提供了一个实时动态的进程监视器。它可以查看系统中所有进程的实时状态,并根据资源占用对进程进行排序。在top界面中,你可以看到进程ID、用户、CPU占用、内存占用等信息。

要查找特定进程,可以在top界面中按u键,输入用户名以筛选该用户的进程。此外,你还可以按o键,然后输入筛选条件,如COMMAND=my_script.sh。按回车键确认,top将仅显示与条件匹配的进程。最后,按ctrl+c退出预览。
linux 查看后台进程,Linux,linux,unix,服务器

三、终止进程

3-1、进程终止概念介绍

进程终止指的是一个正在运行的进程结束其执行的过程。进程终止可以是正常的(例如,进程完成了它的任务,或者用户通过操作系统的接口请求终止进程),也可以是非正常的(例如,进程崩溃或遇到错误)。以下是关于进程终止的一些详细信息:

  • 正常终止:当一个进程完成了它的任务并且正常退出时,它会通知操作系统,操作系统会将进程标记为“已退出”。这时操作系统会释放进程所占用的内存、关闭与进程相关的文件等资源,并将进程的退出代码(一个整数值)返回给父进程。父进程可以通过读取这个退出代码来确定进程完成的状态。如果父进程没有及时调用wait()或waitpid()函数来获取退出状态,那么进程会成为“僵尸进程”,直到父进程获取到退出状态或者父进程本身终止。

  • 非正常终止:当一个进程遇到错误或者崩溃时,它可能会被操作系统强制终止。例如,如果进程发生了段错误(访问了未分配的内存),或者进程超过了允许的资源限制(如内存限制或时间限制),那么操作系统会终止这个进程并向其父进程报告错误信息。在这种情况下,父进程可以通过调用wait()或waitpid()函数来获取进程终止的状态。

  • 信号终止:操作系统可以向进程发送信号来终止进程。例如,如果用户在命令行中按下Ctrl+C,操作系统会向正在运行的进程发送SIGINT信号,告诉它终止执行。进程可以捕获这些信号并采取适当的措施,例如,保存进度并安全地终止执行。如果进程没有捕获这些信号,那么操作系统会默认终止进程,并向其父进程报告错误信息。

总之,进程终止是一个非常重要的概念,对于操作系统的稳定性和安全性具有至关重要的作用。了解进程终止的原因和机制,可以帮助我们更好地理解操作系统的工作原理,从而更好地开发和调试应用程序。

3-2、kill命令介绍

kill 命令用于终止指定的进程。常见的选项包括

  • -9:强制终止进程,相当于发送 SIGKILL 信号。
  • -15(默认选项):正常终止进程,相当于发送 SIGTERM 信号。

例如,要杀死进程号为 12345 的进程,可以使用以下命令:

# 使用top、ps等命令查看进程号
kill 12345

这将向进程号为 12345 的进程发送 SIGTERM 信号,使其正常终止。

如果进程无法正常终止,可以使用 -9 选项强制终止进程。例如:

kill -9 12345

这将向进程号为 12345 的进程发送 SIGKILL 信号,使其强制终止。

需要注意的是,杀死进程可能会导致未保存的数据丢失或其他不可预知的后果。在使用 kill 命令时,应该尽量避免误杀进程,确保只杀死必要的进程。


总结

知识点增加了!文章来源地址https://www.toymoban.com/news/detail-690296.html

到了这里,关于高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux当中如何隐藏和查看进程

    进程是执行程序的过程,类似于按照图纸,真正去盖房子的过程。 同一个程序可以执行多次,每次都可以在内存中开辟独立的空间来装载,从而产生多个进程。不同的进程还可以拥有各自独立的IO接口。操作系统的一个重要功能就是为进程提供方便,比如说为进程分配内存空

    2024年02月15日
    浏览(25)
  • Linux 进程异常退出 如何查看日志

    当进程异常退出时,可以通过以下步骤来查看日志: 找到进程的 PID(进程 ID),可以通过 ps 命令来查看: 找到进程的日志文件,一般情况下,进程的日志文件都会被记录在 /var/log 目录下,可以使用 ls 命令来查看: 打开日志文件,可以使用 tail 命令来查看日志文件的最后几

    2024年02月16日
    浏览(31)
  • linux 如何查看es进程,Linux---关闭Elasticsearch进程,并重新启动

    查看ES进程: 执行命令:ps -ef | grep elasticsearch 如果有elasticsearch进程,则会返回包含elasticsearch的进程信息,如下所示: 如果没有elasticsearch进程,则不会返回任何信息。 关闭ES进程: 执行命令:sudo systemctl stop elasticsearch 等待一段时间,直到ES进程完全停止。 重新启动

    2024年02月11日
    浏览(34)
  • Linux如何查看文件进程占用-lsof

    lsof命令是什么? 可以列出被进程所打开的文件的信息。被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备文件  5.(函数)共享库  6.管道,命名管道 7.符号链接 8.底层的socket字流,网络socket,unix域名socket 9.在linux里面,大部分的东西都是被当做文

    2024年02月12日
    浏览(23)
  • windows10下powershell中如何在后台执行python程序

    在windows10本地执行时间较长的程序时,很容易忘记,随手关掉编译器,程序就此中断,造成精神伤害。 如果不管不挂起,不管日志重定向,我要运行的python脚本的命令很简单 现在挂起在后台,需要把原先在控制台显示的一大堆输出,重定向到日志文件中。注意,在win10下不可

    2024年03月09日
    浏览(29)
  • Linux 查看程序(动态库)、进程的依赖库的方法

    当我们在linux上部署自己开发的项目程序时,项目代码与依赖库完整拷贝过去之后,直接运行我们自己的可执行程序,往往提示找不到所相关的.so库,会报错。 系统只会去默认搜寻目录( /lib和/usr/lib )下, 以及动态库配置文件( /etc/ld.so.conf和/etc/ld.so.conf.d/*.conf )里所列的目录下

    2024年02月02日
    浏览(31)
  • 【Linux】进程与可执行程序的关系&&fork创建子进程&&写实拷贝的理解

            系统会将此时在系统运行的进程的各种属性都以文件的形式给你保存在系统的proc目录下。 运行一个程序的时候,本质就是把磁盘中的程序拷贝到内存中,当一个进程运行起来的时候,它本质已经和磁盘中的可执行程序没有直接关系了。   当前我的myprocess程序正在运

    2024年03月19日
    浏览(31)
  • 【Linux初阶】进程地址空间 | CUP与可执行程序的交互原理

     🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:计算机空间初识(子进程变量修改实验),感性理解进程虚拟地址空间,进程地址空间基础(概念、区域划分与调整、程序对内存数据的修改、按需分配虚拟地址空间),解答为什么存

    2024年02月05日
    浏览(79)
  • Linux如何查看当前占用CPU和内存最多的进程

    查看占用 CPU 最高的前10个进程 查看占用内存(MEM)最高的前10个进程 输入 top 命令,然后按下大写M按照内存MEM排序,按下大写P按照CPU排序

    2024年02月17日
    浏览(41)
  • Linux 系统中常见的命令,它们用于执行各种任务,包括文件和目录管理、系统信息查看、用户管理等

    以下是一些在 Linux 系统中常见的命令,它们用于执行各种任务,包括文件和目录管理、系统信息查看、用户管理等。这里列举了一些基础的命令: 文件和目录管理: ls: 列出目录内容。 ls cd: 切换当前目录。 cd /path/to/directory cp: 复制文件或目录。 cp source_file destination mv: 移动

    2024年01月19日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包