问题标签 [launch-daemon]

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.

0 投票
1 回答
53 浏览

bash - 在 macos 上被守护进程调用 bash 脚本卡住了;有任何想法吗?

我是脚本和守护程序的新手,玩了一段时间后,发现自己卡住了。

情况如下:在 macOS 上,我有一个名为“maza”的程序,它使用在线阻止列表更新我的主机文件。我想运行这个程序,比如说,每周一次,以跟上阻止列表的变化。在尝试了 cronjobs 的运气(没有用)之后,我现在正在尝试使用守护进程。所以我有:

  • 一个名为 com.mazaupdate.plist 的文件位于 /Library/LaunchDaemons
  • 一个名为 scriptmaza.sh 的脚本位于 /etc 中(因为这是主机文件所在的位置)

我的 plist 说明了以下内容(基本上它试图启动脚本 - 此时每 60 秒一次,用于测试目的)。

我的脚本如下(它只是停止 maza,这比“更新”更容易测试,因为目前没有对主机文件进行在线更新)。

测试结束后,plist 将修改为仅每周启动脚本,脚本将更新为“maza update”。

有了我的两个文件,我会:

但是,当我在几分钟后测试 maza 的状态时,它总是说“启用”,这意味着停止命令没有正确使用。当然,如果我只是在终端中使用“sudo maza stop”,maza 会正确停止并且状态变为“禁用”,如果脚本有效,应该是这种情况。

这就是我所拥有的一切。任何想法?谢谢!肯

编辑:

在下面@pmdj 的评论之后,这就是我们的立场。

在 scriptmaza.sh 上 chmod +x 后,权限为:-rwxr-xr-x@ 1 ken wheel 80 17 Feb 12:22 /etc/scriptmaza.sh

修改后的 scriptmaza.sh 现在是:

加载守护程序一段时间后,file.dat 确实会每分钟创建并编辑一次,并使用正确的日期,这意味着守护程序确实会启动脚本。

控制台显示正在正确加载和卸载的守护进程,并且 scriptmaza 记录了许多行,上面写着“tput:$TERM 没有值并且没有指定 -T”

同时,maza 的状态仍然是“启用”。