有时我需要遵循一个过程,我总是找到一个bash脚本做pid=$1
。据我了解,它应该得到我发送给我创建的第一个shell实例的进程ID,该实例正在运行该特定进程,并且我可以稍后使用它(例如,杀死它,或者跟随内存使用情况,或者其他)。 pid=$0
应该得到当前实例(bash)和pid=$!
最新的一个。 (请正确的,如果我错了)正确获取进程ID
问题是:我每次需要运行pid=$1
命令,pid
将一无所获和echo $pid
或echo ${pid}
打印和空行,我总是需要花哨的使用pid=$!
做这件事的方式相反,因为它是唯一获取我的进程ID的东西。有谁知道我的终端为什么会这样? (它的发生无论是在Linux Mint的或Fedora的)
'$ 0'和'$ 1'得到馈送给脚本(或函数)的位置参数。为了使这些成为PID,脚本/函数将需要通过PID作为参数。哦,'$ 0'可能永远不会是PID,因为它通常是脚本/函数的名称 - 实际参数以'$ 1'开头...... – twalberg
@twalberg它只能在脚本文件中工作吗?我的意思是,如果我试图直接在终端上运行它,是不是应该工作? – rafa
通常情况下,终端中运行的shell将被调用,不带任何参数,所以'$ 1'将是空的,'$ 0'将只包含您的shell的名称。不过,您可能已经使用'set'来改变它,所以请用例如“ 'echo“$ 1”'等等...... – twalberg