是否可以使用PID获取进程的文件名?ps 显示了很多关于进程的有用信息,但不显示进程可执行文件位置的提示。
Linux 和 Solaris 上 PID(进程 ID)的最大值和最小值是多少?
许多程序(例如 sshd)在 /var/run/ 中创建包含其进程 ID 的 .pid 文件。这些文件对于确定进程是否正在运行是否可靠?我的猜测是这些文件是由进程手动创建的,因此如果程序崩溃,它们仍将保留在文件系统中。
我需要守护在 Wine 中运行的 Windows 应用程序,并在/var/run. 由于它需要 X11 会话才能运行,因此我需要确保在运行用户的环境中设置了 $DISPLAY 变量。
假设我已经有一个 X11 会话在运行,并带有给定的显示,下面是我的/etc/init.d脚本中的 start-stop-daemon 行:
start-stop-daemon --start --pidfile /var/run/wine-app.pid -m -c myuser -g mygroup -k 002 --exec /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe
Run Code Online (Sandbox Code Playgroud)
不幸的是,我在 Ubuntu 8.04 上的 start-stop-daemon 版本没有-e设置环境变量的选项。我认为您可以在命令之前简单地设置 $DISPLAY,如下所示:
VAR1="Value" start-stop-daemon ...
Run Code Online (Sandbox Code Playgroud)
但它不起作用。由于我使用该-c {user}选项以特定用户身份运行,因此我猜测有一个环境切换并且 VAR1 丢失了。我试过从正在运行的用户.profile和/或导出 DISPLAY,.bashrc但它也不起作用。
有没有另一种方法可以做到这一点?这甚至可能吗?我是否忽略了什么?
我需要为 IRC 记录器创建一个初始化脚本。我复制了/etc/init.d/skeleton。我填写了配置部分以满足我的需要,并且我还必须将 --background 添加到 start daemon 命令,因为我的 IRC 记录器不会分离。当我使用我的 init 脚本时,记录器可以正常启动,但它不会像它应该的那样创建 .pid 文件。因此,除非我自己找出进程 ID 并杀死它,否则进程无法停止。这是脚本:
#! /bin/sh
### BEGIN INIT INFO
# Provides: skeleton
# Required-Start: $remote_fsh
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Example initscript
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d.
### END INIT INFO
# Author: Cory Walker <cwalker32@gmail.com>
#
# Please remove the "Author" lines above and …Run Code Online (Sandbox Code Playgroud) 我的系统在 nano 会话中因未保存的更改而崩溃。
当我通过 SSH 重新登录时,当我执行ps.
davidparks21@devdb1:/opt/frugg_batch$ ps -ef | grep nano
1001 31714 29481 0 18:32 pts/0 00:00:00 nano frugg_batch_processing
1001 31905 31759 0 19:16 pts/1 00:00:00 grep --color=auto nano
davidparks21@devdb1:/opt/frugg_batch$
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在新终端中控制纳米进程?
或者有什么方法可以强制它远程保存(从我的新终端)?
我发现自己必须定期发送kill -STOP 一百万个进程,但它们都来自同一个父进程。有没有更聪明的方法来做到这一点?
我有一个运行在 CloudLinux 6.6 x86_64 标准上的托管 VPS。
它有几个使用 CPanel 运行 MySQL、PHP 和 Apache 的网站。
我正在开发一个需要管理 PID 并检测其状态的 PHP 系统。
我smallint在 MySQL 数据库上定义了一个字段(2 个字节)来存储 PID。
但是今天,我注意到了一些奇怪的事情:
该服务正在“采取行动”,并说实际上任务完成时该进程没有运行。
我查了一下,有 PID 高达997282(迄今为止最高)的进程。
我试图在谷歌上查看这个,但没有任何帮助。
我只找到有关/proc/sys/kernel/pid_max我用来读取它的文件的信息,并从那里获取最大 PID,即1048576.
PID 超过 65535 是否正常?
有点不相关:当 PID 超过 10000 时,服务器是否会尖叫着重启?
您可能需要的任何其他信息,我愿意提供到没有秘密泄露的某个点。
MySQL 服务器无法启动并报告以下错误:
/usr/local/mysql/bin/mysqld: 无法创建/写入文件 '/usr/local/mysql/data/James-Barnhills-Mac-Pro.local.pid' (Errcode: 13)
无法启动服务器:无法创建 PID 文件:权限被拒绝
所有权限都递归设置为:
lrwxr-xr-x 1 _mysql wheel 27 Nov 22 09:25 mysql -> mysql-5.5.18-osx10.6-x86_64
Run Code Online (Sandbox Code Playgroud)
但它不会开始。我已经尝试重新安装几次都无济于事。
我在 Mac OS 上以 root 身份运行,MySQL 对“data”文件夹具有读取、写入和执行权限。
我正在为一个 java 应用程序编写一个 init.d 脚本。但是 java-app 应该由另一个用户运行。
(我使用的操作系统是 Debian Squeeze。)
我已经得到了这个:
/bin/su - $USER - c "cd $PATH;echo $PASSWORD | $JAVA -Xmx256m -jar $PATH/app.jar -d > /dev/null" & PID=$!
/bin/su - $USER - c "echo $PID > $PIDFILE"
Run Code Online (Sandbox Code Playgroud)
但这当然只会保存“/bin/su”进程的pid而不是创建的java进程的pid。