我运行了脚本 postData.sh,但当我执行“ps -ef”时,我没有在正在运行的程序列表中看到该脚本,但我确实看到额外的 -bash 进程正在运行。我如何确定 pid 以便可以终止当前在后台运行的脚本?
谢谢,Dean
答案1
要获取进程的 PID,请使用:
pidof postData.sh
替代方法:
pgrep postData.sh
答案2
这可能会帮助你找到它,因为它会打印进程 ID、父进程 ID 和扩展命令
ps -eo pid,ppid,start_time,command
这将生成一个便捷的流程树。
pstree -pu
如果你发现有些事情需要暂停,以评估其是否是正确的流程,你可以kill -STOP <pid>
使用kill -CONT <pid>
答案3
好的,我解决了。我复制的脚本缺少#!/bin/bash
,出于某种原因,当我在 ps -ef 中运行脚本时,它只会显示为 -bash。现在我添加了#!/bin/bash
,它正确显示为
[root@sdi-prod-01 manytables]# ps -ef | grep postTemp
root 29165 28764 1 10:51 pts/12 00:00:00 /bin/bash ./postTemp.sh 1
grrrrrr,这很烦人,我所有的脚本都已在运行,但我无法区分它们......我想,活到老学到老。
答案4
使用ps -x
输出整个命令。