问题标签 [pid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - 如何检查进程ID(PID)是否存在
在 bash 脚本中,我想执行以下操作(在伪代码中):
条件语句的适当表达式是什么?
c# - C#根据PID定期监控程序
提前感谢您的想法和意见。
我想定期检查第三方程序是否正在我的程序中的用户系统上运行。我目前在 C# 中按如下方式启动该程序:
我启动程序并在 Windows 环境中获取它的 pid。由于 Putty/PLink 可能会在某些时候断开与 SSH 服务器的连接并关闭,因此监控此过程在代码中的执行情况的最佳方法是什么?
有没有更好的方法来启动这个程序来监控它的成功或失败?
c++ - C++使用系统获取PID
我正在使用 运行文件system
,但我不知道如何获取该进程的 PID。有人知道怎么做吗?
windows - windows PID = 0 有效吗?
在 Windows 中,0 是进程的有效 PID 还是由操作系统保留?如果您可以提供一个文档的链接,说明它是保留的或什么的,那就太好了。谢谢!
objective-c - 如何从已知的 PID 中找到 Bundle Identifier?
我有任意正在运行的进程的 pid(进程标识符)。如何找到相关应用程序的捆绑标识符(如果有)?
php - 为什么在 PHP CLI getmypid() 中返回 0 作为 pid?
我正在开发一个长时间运行的命令行脚本,当然我不想多次启动自己。所以我写了一个 .pid 文件并在启动时检查是否存在具有这种 PID 的进程。问题是在 Windows 上它返回 0 作为 PID,所以我总是通过该 PID 运行一个进程(系统空闲的 PID 为 0)。
有人知道如何解决吗?我可以让守护进程在 Windows 上运行吗?也许修复将使用 pcntl_fork 进行分叉?
PS 我正在使用 Yii,它的基础是 CConsoleCommand 类。
java - 即使脚本的执行完成,Java 也会挂起
我正在尝试从我的 java 代码中执行一个脚本,如下所示:
脚本的执行结束了(它的 pid 已经没有了),但是 java 卡在waitFor()
了进程的方法上!。是的,我正在 2 个单独的线程中读取输出和错误流。是的,他们在最后(之后waitFor()
)加入。
该脚本基本上会安装一些 RPM(比如 10 个左右)并对其进行配置。所以脚本运行了 60 多秒。
它看起来类似于以下内容:
令人震惊的是,如果我在脚本中添加以下行(在顶部),Java 会理解脚本已经结束并且它会完美地终止该过程。
作为记录,该脚本不会生成任何输出。零字符!所以把 exec 语句放在那里是没有意义的!
但是,神奇的是,将 exec 语句放入脚本中可以使 java 工作!为什么??
如何避免脚本中不合逻辑的 exec 语句?
如果您对 installer-script.sh 的外观感兴趣,那么:
现在,为什么 Java 需要第一个脚本中的 exec 命令才能知道进程已经结束?我怎样才能避免那个执行?,尤其是。因为第一个脚本不产生任何输出。
屏住呼吸等待答案!
bash - 用于杀死并重新启动 Hudson 的 Bash 脚本
我是 Bash 脚本的新手,但我学得很快。通常。我正在尝试编写一个脚本来杀死并重新启动 Hudson 的一个实例——它需要重新启动以获取环境变量中的更改。到目前为止我所拥有的:
该脚本正确地确定了正在运行的 Hudson 实例的 PID 并将其终止。但是,它只是在“kill”行之后等待并且不会继续。如果我在那里按下一个键,它会完成终止进程并退出脚本,甚至永远不会进入 while 循环。显然,我遗漏了有关如何终止该过程的信息。并不是说Hudson进程挂了,没有响应“kill”;它正常退出,直到我干预。
我也确信这可能会更有效率,但现在我只想了解我哪里出错了。
提前致谢。
linux - How to find PID of an dash-exec command
NOTE: I thought I was using bash, but /bin/sh is linked to /bin/dash, which has this weird exec problem.
I have a simple bash shell script on Linux which is used to launch a server process (which I did not write or control) and would like to have the bash shell script output the launched process's PID to a pidfile.
The problem is that bash-exec command does not replace its own process with the launched server process!
So:
This does not work because the pid in the file will be that of bash not the server process. And if the server process exits bash may not exit leaving the stupid launch script hanging out in the process list.
Does anyone know a way to use bash (or dash maybe?) so that:
- Is it possible?
- The launched-server server process's PID will be in my pidfile?
- Ensure that the bash script will die when the launched-server exists and not leave defunct shell processes hanging out in the process list?
Edit: This snippet from the bash reference manual be of use...
If command is supplied, it replaces the shell without creating a new process. If the -l option is supplied, the shell places a dash at the beginning of the zeroth argument passed to command. This is what the login program does. The -c option causes command to be executed with an empty environment. If -a is supplied, the shell passes name as the zeroth argument to command. If no command is specified, redirections may be used to affect the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero.
Edit 2: This is the script (sanitized):
And some ps output to maybe be more clear?
c - How to use the pidfile library correctly?
I already read the man page of the pidfile function family. But I don't really understand it. What is the correct usage? Is there a more elaborate example available? I think I understand pidfile_open
. But when should I call pidfile_write
and prdfile_close
? From which process? Parent or child? What parameters do I have to pass to those functions? I propably lack some *nix fundamentals I guess.
Update:
Below you see the example from man pidfile. Why do they fork twice? Why pidfile_close? When I call pidfile_close I can start another daemon. Isn't that unwanted?