0

0

Linux怎样后台运行程序 nohup与&使用方法对比

P粉602998670

P粉602998670

发布时间:2025-07-21 10:22:02

|

1107人浏览过

|

来源于php中文网

原创

linux 中,nohup 和 & 的主要区别在于对 sighup 信号的处理;1. & 是将程序放在后台运行,但关闭终端时进程会因收到 sighup 信号而退出;2. nohup 则会忽略 sighup 信号,确保程序即使在终端关闭后仍持续运行;3. 使用 nohup 时默认输出会被重定向至 nohup.out 文件,也可自定义输出文件;4. 若需长时间运行程序应使用 nohup,若仅需临时后台运行则可用 &;5. nohup 程序仍可能因内存不足、磁盘空间不足或被其他进程终止而退出;6. 可通过 ps 或 top 命令查看后台进程;7. 使用 kill 命令加 pid 可停止对应进程,无响应时可加 -9 强制终止。

Linux怎样后台运行程序 nohup与&使用方法对比

Linux中,想让程序在后台默默运行,nohup& 都是常用的工具。但它们之间还是有些微妙的区别,用对了能省不少事。

Linux怎样后台运行程序 nohup与&使用方法对比

解决方案

Linux怎样后台运行程序 nohup与&使用方法对比

简单来说,& 是让命令在后台运行,但当你关闭终端时,这个进程也会收到 SIGHUP 信号而退出。nohup 的作用就是忽略 SIGHUP 信号,让程序在后台持续运行,即使你关闭终端也没关系。

具体用法:

Linux怎样后台运行程序 nohup与&使用方法对比
  • &: command & 直接在命令后面加上 &,程序就被丢到后台运行了。你会看到一个进程 ID (PID)。

  • nohup: nohup command > output.log 2>&1 & 这个命令稍微复杂一点。nohup 告诉系统忽略 SIGHUP 信号。> output.log 是将标准输出重定向到 output.log 文件,2>&1 是将标准错误也重定向到标准输出(也就是 output.log)。最后的 & 还是让整个命令在后台运行。

nohup& 的区别是什么?

最关键的区别就是对 SIGHUP 信号的处理。& 只是让进程在后台运行,但当终端关闭时,进程会收到 SIGHUP 信号,默认情况下会退出。nohup 会忽略这个信号,保证进程持续运行。

另外,nohup 默认会将输出信息追加到 nohup.out 文件中,如果不想看到这个文件,可以用重定向将输出信息导向其他地方,例如上面例子中的 output.log

什么时候应该使用 nohup?什么时候应该使用 &

  • 使用 nohup 的场景: 你需要程序长时间运行,即使关闭终端也不希望它停止。例如,运行一个服务器程序,或者进行长时间的数据处理任务。

  • 使用 & 的场景: 你只是想暂时把程序丢到后台,不需要它长时间运行,或者你知道即使终端关闭,程序也能正常处理 SIGHUP 信号。例如,运行一个简单的脚本,或者启动一个图形界面程序。

为什么我用 nohup 运行的程序还是退出了?

这可能是以下几个原因:

  1. 程序自身错误: 程序内部出现了错误,导致崩溃退出,这和 nohup 无关。查看日志文件(例如 nohup.out 或你指定的输出文件),看看有没有错误信息。
  2. 内存不足: 程序运行需要大量内存,而系统内存不足,导致程序被 kill 掉。
  3. 被其他进程 kill 掉: 可能有其他进程(例如系统监控进程)认为你的程序占用过多资源,将其 kill 掉。
  4. 磁盘空间不足: 程序需要写入大量数据到磁盘,但磁盘空间不足,导致程序无法正常运行。

要排查问题,需要仔细查看日志,并监控系统资源使用情况。

如何查看后台运行的程序?

可以使用 ps 命令查看当前运行的进程。例如,ps aux | grep your_program_name 可以查找包含 "your_program_name" 的进程。top 命令可以实时查看系统资源使用情况,包括 CPU、内存等。

如何停止后台运行的程序?

首先,使用 ps 命令找到程序的 PID。然后,使用 kill PID 命令发送 SIGTERM 信号给程序,尝试正常停止程序。如果程序没有响应,可以使用 kill -9 PID 命令发送 SIGKILL 信号强制停止程序。注意,强制停止程序可能会导致数据丢失

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1350

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

573

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

297

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

381

2023.07.25

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号