如何在Linux/Unix中返回最后一个命令的pid
时间:2020-01-09 10:39:37 来源:igfitidea点击:
如何查找并返回在Linux中执行的最后一个命令的PID。
如何在Linux中返回命令的PID?
您可以在Shell脚本或bash中轻松找到最后执行的命令的PID。
本教程说明如何获取上次执行的应用程序/程序的PID。
如何在Linux中返回最后一个命令的pid
语法如下:
- 打开终端应用程序
- 在后台运行命令或应用程序。例如:
firefox&
- 要获取最后执行的命令的PID,请执行:
echo" $!"
- 将最后一个命令的pid存储在名为foo的变量中:
foo = $!
- 打印它,运行:
echo" $foo"
最后执行的命令的PID在$!中。变量
bash特别对待几个变量。
仅可引用这些变量,不允许对其进行分配。
例如,$!
扩展为最近放置在后台的命令/程序的进程ID(PID),无论是作为异步命令执行还是使用bg命令/内置命令。
如何获得刚刚开始的过程的pid
让我们开始睡眠过程,运行:
sleep 20 & echo $!
或者
firefox & echo $!
使用特殊shell变量显示的最后执行命令的PID
Shell脚本示例
让我们创建一个名为my-app.sh的shell脚本包装:
#!/bin/bash echo "Starting my Linux/Unix awesome-app..." /path/to/your/awesome-app & _pid=$! echo "$_pid" > /var/run/awesome-app.pid echo "Pid $_pid stored in /var/run/awesome-app.pid"
使用作业内部命令
jobs命令显示作业的状态,例如:
sleep 20 &
要列出进程ID,将-p选项传递给cron:
my-app & jobs -p
jobs命令可用于ksh和其他shell。
通常,我在shell脚本包装中放入以下内容:
#!/bin/bash _name="/path/to/my-java-app" _pid="/path/to/my-java-app.pid" ((${_name}) & jobs -p >${_pid})
甚至可以在使用以下语法运行之前获取命令的PID
bash -c 'echo $$; exec /path/to/my-command'
但是,我建议坚持使用$_
或jobs -p
方法。