nohup启动程序后如何获取进程号Pid

【需求背景】:在Linux上执行一个Matlab程序,多个用户在同一个账号下同时启动了多个Matlab程序。运行一段时间后 如果想终止其中的某个进行 需要kill掉,但是kill掉哪一个呢?利用Top指令显示的结果是:

PID USER … COMMAND
6853 jackey   …  /media/workOne/matlab/bin/glnxa64/MATLAB

通过COMMAND已经服务区分多个进程了,因而我们需要在启动进程时打出此进程号。比较笨的方法是自己拿纸笔来记录了,哈哈,执行nohup后会在终端输出给你的。而自动输出方法是什么呢?nohup后显示的pid既不是标准输出也不是标准错误输出,无论用2>还是1>都是无法获取的。那么我们可以通过另外一种方法进行记录:利用$!创建进程号的文件。

直接上示例(run.sh):

#!/bin/sh

ls test_jacoxu-* | (while
read line;
do
echo “Start to run the matlab file:”${line}
nohup ../matlab.ln <$line> $(date ‘+%Y-%m-%d_%H-%M-%S’)${line}.out&
touch $!”.pid”
done)

通过touch $!”.pid”就可以输出以当前进程号命名的文件啦.pid

======================== 吐槽Time ================================
最近调试CNN模型状态欠佳,又进入了一个低效模式,貌似假期来临前的状态就是等待放假。换一个思路,看看分布式吧

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>