linux nohup命令 在后台运行程序

本文介绍如何使用nohup命令使程序在Unix/Linux环境下后台运行,即使终端关闭也能保持程序运行。nohup命令可以确保程序不停止运行,并将输出重定向到nohup.out文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用经验: 运行某公司的应用;

nohup sh run.sh -b 0.0.0.0 &



使用nohup让程序永远后台运行

Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运 行,并且希望在后台能够定期运行,那么就使用nohup:

nohup /root/test.php &

  提示:

  [~]$ appending output to nohup.out

  嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。

  附:nohup命令参考

  nohup 命令

  用途:不挂断地运行命令。

  语法:nohup Command [ Arg ... ] [ & ]

   描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

   无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

  退出状态:该命令返回下列出口值:

  126 可以查找但不能调用 Command 参数指定的命令。

  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

nohup命令及其输出文件

  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

该命令的一般形式为:nohup command &

使用nohup命令提交作业

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.file 2>&1 &

在上面的例子中,输出被重定向到myout.file文件中。

使用 jobs 查看任务。

使用 fg %n 关闭。

另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。

注意使用。

### Linux中使用nohup命令后台运行jar包的方法 在Linux系统中,`nohup` 命令可以用于将程序后台方式运行,并忽略挂起信号(SIGHUP),从而确保即使关闭终端或SSH连接,程序仍然能够继续执行[^2]。以下是具体的命令示例和用法说明: #### 基本命令格式 ```bash nohup java -jar demo.jar > nohup.log & ``` 上述命令中: - `nohup`:使程序忽略挂起信号。 - `java -jar demo.jar`:运行指定的JAR包程序。 - `> nohup.log`:将程序的标准输出重定向到 `nohup.log` 文件中。 - `&`:将命令放入后台执行。 #### 输出日志的处理 如果需要将标准错误输出也重定向到同一文件中,可以使用以下命令: ```bash nohup java -jar demo.jar > log.log 2>&1 & ``` 此命令中,`2>&1` 表示将标准错误输出(文件描述符2)重定向到标准输出(文件描述符1),最终所有输出都会写入 `log.log` 文件[^3]。 #### 使用绝对路径 为了确保命令在任意工作目录下都能正确执行,建议使用绝对路径指定JAR包和日志文件的位置: ```bash nohup java -jar /export/server/jar/test.jar > /export/server/jar/testlog.log 2>&1 & ``` 通过这种方式,可以明确指定JAR包和日志文件的具体位置,避免因当前工作目录不同而导致的问题[^4]。 #### 查看程序运行状态 运行程序后,可以使用以下命令查看日志文件的内容: ```bash tail -f /export/server/jar/testlog.log ``` `tail -f` 命令会实时显示日志文件的新增内容,便于监控程序运行状态。 #### 停止后台运行程序 若需要停止由 `nohup` 启动的程序,可以先找到其进程ID(PID),然后使用 `kill` 命令终止: 1. 查找进程ID: ```bash ps aux | grep demo.jar ``` 2. 终止进程: ```bash kill -9 <PID> ``` ### 注意事项 - 如果未指定输出文件,默认情况下,`nohup` 会将输出重定向到当前目录下的 `nohup.out` 文件中。 - 确保日志文件所在的目录具有写权限,否则可能会导致日志记录失败。 - 在Windows系统上运行JAR包时,可以直接双击文件启动,而在Linux系统中则推荐使用 `nohup` 或其他类似工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值