我想启动进程(例如 myCommand)并获取它的 pid(以允许稍后杀死它)。
我试过 ps 并按名称过滤,但我无法按名称区分进程
myCommand
ps ux | awk '/<myCommand>/ {print $2}'
Run Code Online (Sandbox Code Playgroud)
因为进程名称不是唯一的。
我可以通过以下方式运行进程:
myCommand &
Run Code Online (Sandbox Code Playgroud)
我发现我可以通过以下方式获得这个 PID:
echo $!
Run Code Online (Sandbox Code Playgroud)
有没有更简单的解决方案?
我很乐意执行 myCommand 并通过一行命令获取其 PID。
在 Ubuntu 上:
touch: cannot touch `/var/run/test.pid': Permission denied
Run Code Online (Sandbox Code Playgroud)
我正在启动 start-stop-daemon 并且喜欢将 PID 文件写入 /var/run start-stop-daemon is run as my-program-user
/var/run setting is drwxr-xr-x 9 root root
Run Code Online (Sandbox Code Playgroud)
我喜欢避免将 my-program-user 放在根组中。
在数据库上,我可以获得所有当前正在运行的进程的列表,以及启动它们的 sql 命令。
我想在 windows box 上做类似的事情。
我可以获取进程列表,但不能获取启动它们的命令行。
我的问题是:给定 Windows 上的 PID - 如何找到执行它的命令行指令?
假设:
我将我的 sphinx pid 保存在 /var/run/sphinx/searchd.pid 但每次我硬重启目录 /var/run/sphinx 消失并且 sphinx 无法启动。有没有办法使该目录保持不变或自动创建?人们通常如何处理这种情况?我使用 Ubuntu Hardy
我可以很好地启动 MySQL,
/usr/local/mysql/support-files/mysql.server start
Starting MySQL
SUCCESS!
Run Code Online (Sandbox Code Playgroud)
但是之后的任何 MySQL 操作都会出现错误:
找不到 MySQL 服务器 PID 文件
/usr/local/mysql/support-files/mysql.server stop
ERROR! MySQL server PID file could not be found!
Run Code Online (Sandbox Code Playgroud)
在装有 OSX 10.8 的 Mac 上,我在哪里可以找到服务器 PID 文件?我想知道这是否是权限问题。mysql.sock 文件是一个符号链接,指向 tmp/ 目录中的文件。
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud) 我正在设置 monit 并想监控给定的 python 应用程序。Monit 通过查看进程的 .pid 文件来做到这一点,但我不知道这会在哪里。
我还尝试创建自己的简单可执行文件并运行它 - 在这里我也无法弄清楚 .pid 文件的创建位置。
并且所有进程都有一个 .pid 文件吗?
谁能告诉我如何获取在 bash 中执行的命令的 PID。
例如,我有一个运行 imapsync 的 bash 脚本。
当脚本被杀死时,imapsync 进程并不总是被杀死,所以我希望能够从我的脚本中以编程方式识别 imapsync 的 PID,这样我就可以在信号处理程序中自己杀死 imapsync 进程。
那么如何以编程方式从父 bash 脚本中获取子进程的 PID?
我有一个.pid文件,我需要检查进程是否正在运行。到目前为止,我发现了两个选项
kill -0 `cat something.pid`
Run Code Online (Sandbox Code Playgroud)
如果 pid 未运行,则会打印出错误。我知道这可以重定向到/dev/null,但这让我认为这不是最好的解决方案。
第二种解决方案是使用ps,但是它也会在 STDOUT 上打印
ps -ef `cat something.pid`
Run Code Online (Sandbox Code Playgroud)
将输出重定向到/dev/null并仅使用返回的状态代码是否正常,或者这是否表明我做错了什么,我需要一个不同的命令?
我正在尝试将端口 80 用于我的应用程序服务器,但是当我执行“netstat -aon”时,我得到
TCP 0.0.0.0:80 0.0.0.0:0 聆听 4
当我在任务管理器中查找进程时,它显示 PID 4 是 SYSTEM,就是这样,而不是扩展名......没有,只是“SYSTEM”。这里发生了什么?
我害怕结束这个过程,我该怎么办?
Linux 和 Solaris 上 PID(进程 ID)的最大值和最小值是多少?