我从我的shell脚本开始后台进程,我想在脚本完成时终止这个进程.
如何从我的shell脚本中获取此进程的PID?据我所知,变量$!
包含当前脚本的PID,而不是后台进程.
我正在尝试将端口80用于我的应用程序服务器,但是当我执行时,netstat -aon
我得到:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
当我在任务管理器中查找过程时,它显示的PID 4
是SYSTEM
,就是这样.没有延期......没什么.只是" SYSTEM
".这里发生了什么?
我害怕结束这个过程,我该怎么办?
更新:
我已经通过另一个Stack Overflow问题解决了这个问题,该问题的解决方案是让IIS停止在端口80上侦听指定的IP地址.
我最近遇到了一个扩展名为.pid的文件,并在其中进行了探索,但没有找到太多内容.文件说:
Pid-File是包含进程标识号(pid)的文件,该文件存储在文件系统的明确定义的位置中,从而允许其他程序找出正在运行的脚本的pid.
任何人都可以对此有所了解,或者引导我了解pid文件中包含的内容的详细信息?
在bash脚本中,我想执行以下操作(在伪代码中):
if [ a process exists with $PID ]; then
kill $PID
fi
Run Code Online (Sandbox Code Playgroud)
条件语句的恰当表达式是什么?
我有Bash的问题,我不知道为什么.
在shell下,我输入:
echo $$ ## print 2433
(echo $$) ## also print 2433
(./getpid) ## print 2602
Run Code Online (Sandbox Code Playgroud)
"getpid"是一个获取当前pid的C程序,如:
Run Code Online (Sandbox Code Playgroud)int main() { printf("%d", (int)getpid()); return 0; }
令我困惑的是:
你能帮助我吗?
我在Bash中调用了一个脚本Script.sh
,它需要知道自己的PID(即我需要在Script.sh中获取PID)
知道怎么做吗?
有谁遇到过这个问题?昨天我仍然可以在模拟器中运行我的应用程序,但现在我无法运行我的应用程序,因为Xcode在控制台中打印此错误:
error: failed to attach to process ID <ID number>
Run Code Online (Sandbox Code Playgroud)
我试图重新安装,做这个帖子并创建新项目,但没有回复运气.有人可以解决这个问题吗?
我使用Xcode 4.5 Preview 2并尝试运行iOS模拟器6
确保只有给定脚本的一个实例运行的最简单/最好的方法是什么 - 假设它是Linux上的Bash?
目前我正在做:
ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh
Run Code Online (Sandbox Code Playgroud)
但它有几个问题:
-C
仅检查进程名称的前14个字符当然,我可以编写自己的pidfile处理,但我觉得应该有一个简单的方法来实现它.
有没有办法检查pid是否对应一个有效的进程?我从不同的来源获得了一个pidos.getpid()
,我需要检查是否在该机器上不存在具有该pid的进程.
我需要它在Unix和Windows中可用.我还在检查PID是否未被使用.