linux 使用nohup的时候输出日志的同时也输出该程序的pid

今天在调试程序的时候发现找不到进程pid,用grep查找python进程的时候,发现有很多重名的,不知道该杀死哪一个,这里可以在用nohup的时候同时把pid输出到文件里面,这样就方便操作进程了,我的命令为:

nohup python3 -u train.py > output2.log 2>&1 & echo $! > run.pid

这个运行完以后,训练的日志会输出到output2.log中,而进程的id就会输出到run.pid中,亲测可用。

后面如果想停止该程序,就可以直接在run.pid文件里面找到pid,然后用下面的命令:

kill -9 your_pid

就可以终止程序了

参考文献

[1]. How to run nohup and write its pid file in a single bash statement. https://stackoverflow.com/questions/20254155/how-to-run-nohup-and-write-its-pid-file-in-a-single-bash-statement

[2].如何获取进程ID杀死一个nohup的过程?(How to get the process ID to kill a nohup process?). https://www.it1352.com/321596.html

### 回答1: 如果您想重启运行在Linux上的Java进程,可以使用以下步骤: 1. 查找正在运行的Java进程的进程ID(PID)。您可以通过运行以下命令来查找正在运行的Java进程: ``` ps -ef | grep java ``` 这将列出所有正在运行的Java进程,并显示它们的PID。 2. 使用kill命令停止正在运行的Java进程。您可以使用以下命令停止进程: ``` kill -9 <PID> ``` 其中<PID>是步骤1中找到的Java进程的PID。 3. 使用nohup命令启动Java进程。您可以使用以下命令启动Java进程: ``` nohup java -jar <your_jar_file_name>.jar & ``` 其中<your_jar_file_name>.jar是您的Java应用程序的JAR文件名。 注意,使用nohup命令启动Java进程将使Java进程在后台运行,并且在您注销或关闭终端会话时不会停止。 ### 回答2: 在Linux系统中,使用nohup命令可以在终端关闭后保持进程继续运行,即使当前用户已退出。重启Java进程也可以使用nohup来实现。 首先,在终端中使用以下命令来启动Java进程,并且使用nohup命令使其在后台运行: ``` nohup java -jar your_java_program.jar & ``` 这条命令中的`your_java_program.jar`是你要运行的Java程序包的文件名。这个命令将会在终端关闭后继续在后台运行Java进程。 如果需要重启Java进程,我们可以通过以下步骤来实现: 1. 首先,需要找到Java进程的进程ID(PID)。可以使用ps命令来查看所有正在运行的Java进程,并找到对应的PID: ``` ps aux | grep java ``` 这个命令将会列出所有包含"java"关键字的进程信息,找到你要重启的Java进程对应的PID。 2. 找到PID后,可以使用kill命令来终止该进程: ``` kill PID ``` 将PID替换为上一步骤中找到的Java进程的PID。 3. 终止进程后,再次使用nohup命令来重新启动Java进程: ``` nohup java -jar your_java_program.jar & ``` 这个命令会启动一个新的Java进程,并将其放入后台运行。 通过以上步骤,就可以实现在Linux系统中使用nohup命令重启Java进程。无论是在终端关闭后还是手动重启,都可以保持Java进程继续运行。 ### 回答3: 在Linux上,我们可以使用nohup命令重启Java进程。nohup命令的作用是在当前终端断开连接后仍然能够继续执行命令,并且将命令的输出重定向到一个指定的文件中。 要重启一个Java进程,首先需要找到该进程的进程ID(PID)。我们可以使用如下命令找到正在运行的Java进程: ``` ps -ef | grep java ``` 查找到相关的进程后,可以根据需要选择要重启的进程。然后,使用kill命令终止该进程: ``` kill -9 <PID> ``` 需要注意的是,上述命令中的`<PID>`应替换为要终止的Java进程的实际进程ID。 接下来,使用nohup命令以后台方式启动Java进程,并将输出重定向到一个日志文件中: ``` nohup java -jar your_jar_file.jar > your_log_file.log & ``` 在上述命令中,`your_jar_file.jar`应替换为你实际的Java可执行文件,而`your_log_file.log`则是你希望将输出信息存储的日志文件名。 最后加上`&`符号,使得该命令在后台运行。 通过上述命令,我们成功地使用nohup命令重启了Java进程,并且在断开连接后仍然能够继续运行。同时,重定向的日志文件也可以用于后续的排错和日志记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值