当我sudo kill -9 [PID]
使用正确的进程 ID运行时,该进程停止但随后重新启动并具有新的 PID。我正在尝试终止该mysqld
进程。
如何在终止进程时模仿活动监视器?在活动监视器中,当您按“退出进程”时,进程将永久停止运行,完全终止。我想这kill
会做同样的事情吗?
我让活动监视器和终端彼此相邻,以查看命令是否有效,但每次我这样做时sudo kill -9 [PID]
,活动监视器中的进程都不会消失,它只是用新的 PID 刷新。
那么......我如何mysqld
通过终端终止进程?
我有以下 launchctl 命令作为 .plist 文件。它已加载并设置为每天运行一次,但是它需要以 root 身份运行,我不知道如何验证这一点。
此外,这个 cron 作业基本上 CD 到一个目录中并运行一个命令。我确信 launchd 有更好的方法来指定它应该运行命令的目录。
我怎么知道它是以 root 身份运行的,有没有更好的方法来编写它?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>dev.project.frontpage.feedparser</string>
<key>ProgramArguments</key>
<array>
<string>cd</string>
<string>/Users/eman/src/project/trunk/includes/;</string>
<string>./feed-parser.php</string>
<string>-c</string>
<string>./feed-parser-config.xml</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud) 我有一个 launchd 守护进程,~/Library/LaunchAgents
它在小牛队中运行良好。但它不会从优胜美地公开测试版开始。守护进程plist是这样的(我的用户名是darksair
UID 501)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.darksair.retrmail</string>
<key>ProgramArguments</key>
<array>
<string>/Users/darksair/bin/retrmail.py</string>
</array>
<key>KeepAlive</key>
<false/>
<key>StartInterval</key>
<integer>300</integer>
<key>LaunchOnlyOnce</key>
<false/>
<key>UserName</key>
<string>darksair</string>
<key>ProcessType</key>
<string>Standard</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/Users/darksair/Python/bin:/Users/darksair/Python3/bin:/Users/darksair/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>StandardOutPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
<key>StandardErrorPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
基本上它应该~/bin/retrmail.py
每5分钟运行一次。
我注意到在 Yosemite 中,launchd 升级到 2.0,并且 launchctl 有新的命令。我试过
sudo launchctl kickstart user/501/org.darksair.retrmail
Run Code Online (Sandbox Code Playgroud)
它说
Could not find service "org.darksair.retrmail" in domain for uid: 501
Run Code Online (Sandbox Code Playgroud)
我也试过老派
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist …
Run Code Online (Sandbox Code Playgroud) 如何在 Mac OS X 中设置环境变量,以便它们可用于 GUI 应用程序而不使用~/.MacOSX/environment.plist或登录挂钩(因为这些已弃用)?
我试图在我的 Mac 上运行一个应用程序,但它很快关闭,我检查了隔离标志,但这不是问题,我检查了控制台,这是错误信息:
9/24/12 1:44:19.343 AM com.apple.launchd.peruser.501[150]: ([0x0-0x330330].com.krill.CodeRunner[5405]) Job failed to exec(3) for weird reason: 13
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
提前致谢
当我运行 Zotero/Firefox 时,它们经常崩溃并且我留下僵尸进程;在此之后,我无法打开 Zotero 或 Firefox 的新实例。我想摆脱这些僵尸进程而不是重新启动,所以对于<pid>
僵尸进程,
$ ps -p <pid> -o ppid=
Run Code Online (Sandbox Code Playgroud)
给我<parent_pid>
和
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
Run Code Online (Sandbox Code Playgroud)
告诉我父进程是/sbin/launchd
用于用户的crippledlambda
。
有没有办法在不杀死我的系统的情况下重新启动它?
sudo kill -1 <parent_pid>
Run Code Online (Sandbox Code Playgroud)
什么也没做。我试过在脚本中编写它并使用sudo
以下命令运行它:
for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done
Run Code Online (Sandbox Code Playgroud)
这显然(?)让我的灰色屏幕没有响应,所以无论如何我都必须重新启动。预先感谢您的建议。
我无法在 OS X (Leopard) 上使用launchctl
/安排定期启动launchd
。基本上,我无法在网上找到分步说明列表,而且直观的方法不起作用。
该sync.plist
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.madrat.utils.sync</string>
<key>Program</key>
<string>rsync</string>
<key>ProgramArguments</key>
<array>
<string>-ar</string>
<string>/path/to/folder/</string>
<string>/path/to/backup/</string>
</array>
<key>StartInterval</key>
<integer>7200</integer>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我已将此脚本放在 path 中~/Library/LaunchAgents
。
接下来,我使用注册了脚本
launchctl load ~/Library/LaunchAgents/sync.plist
Run Code Online (Sandbox Code Playgroud)
最后,为了测试它是否有效,我开始了这项工作:
launchctl start net.madrat.utils.sync
Run Code Online (Sandbox Code Playgroud)
- 什么都没有发生。rsync
在终端中手动执行命令会产生预期的结果。
我相当确定该作业已正确注册,因为如果我尝试启动一个不存在的作业,我会收到一条错误消息(我在上面的命令中没有收到)。
我做错了什么?
我有一个有点复杂的 bash 命令,它包含一些管道和一个 if-then-else 子句,更不用说grep
使用多个参数调用系统程序(例如)。
有没有办法创建一个 plist,launchd 将直接加载和运行这个复杂的命令?(与让 plist 引用包含复杂命令的 bash 脚本文件相反)
谢谢。
我在系统日志文件中读取这些错误已经有几天了。
25/11/11 21:31:43,373 com.apple.launchd: (com.apple.launchd.peruser.32697[92747]) getpwuid("32697") failed
25/11/11 21:31:43,374 com.apple.launchd: (com.apple.launchd.peruser.32697[92747]) Exited with code: 1
25/11/11 21:31:43,374 com.apple.launchd: (com.apple.launchd.peruser.32697) Throttling respawn: Will start in 10 seconds
Run Code Online (Sandbox Code Playgroud)
我有 OSX Lion 10.7.2。
这些消息每隔几秒钟就会一遍又一遍地重复,我已经注视了 getpwuid() 并且它似乎是一个系统调用。
我还阅读了一些关于这个问题的超级用户帖子:
https : //superuser.com/search?q=com.apple.launchd.peruser
但是在控制台中运行报告的命令并没有给我任何关于如何解决这个问题的提示.
我已经将这个错误的第一次出现追溯到 11 月 20 日,这里是 system.log 文件的前几行:
Nov 20 17:22:10 MacBook-Pro com.apple.backupd[45360]: Deleted /Volumes/Time Machine/Backups.backupdb/MacBook Pro/2011-11-18-215307 (64.9 MB)
Nov 20 17:22:26 MacBook-Pro com.apple.backupd[45360]: Deleted /Volumes/Time Machine/Backups.backupdb/MacBook Pro/2011-11-18-205448 (88.3 MB)
Nov 20 17:22:26 MacBook-Pro com.apple.backupd[45360]: Post-back up thinning complete: 5 expired backups removed …
Run Code Online (Sandbox Code Playgroud)