启动时在 iMac 上运行 bash shell 脚本

启动时在 iMac 上运行 bash shell 脚本

/var/tmp/test.sh我有一个在 iMac 上无限循环运行的bash shell 脚本while

我希望这个脚本能够 24X7 运行,即使 iMac 重新启动,脚本也应该自动运行。

我想运行shell脚本以24X7作为后台进程运行。

您能否建议一个快速简单的解决方案,我该怎么办?

答案1

苹果还没有杀死cron,所以我认为你至少有两个选择:cronLaunchControl

简要地:

  • cron是“老派”命令行 Unix。它使用 acrontab来定义时间表。它是免费的、开源的并且被广泛使用。它很容易使用——如果你了解它的局限性。

  • 苹果原生launchdlaunchctl具有比 更强大的功能cron,但从您的问题来看,这些附加功能似乎是不必要的。但如果您仍然感兴趣,那么您应该了解一些事情。你应该知道的第一件事是LaunchControl;你用了这个词简单的在你的问题中,这几乎消除了launchctl.LaunchControl是一个第 3 方商业(非免费)应用程序,它提供了一个健全的 GUI 调度机制launchd;这是什么launchctl 本来应该

解决方案cron

第一步取决于是否需要root(管理员)权限。由于您没有提及它们,我们将假设您的sh脚本只需要用户权限:

  1. TerminaliMac 上的应用程序:
% crontab -e

您可能会收到一条提示,要求您为您的crontab.如果您不确定选择哪个,请选择nano作为您的编辑器。

您的crontab遗嘱将在您选择的编辑器中打开。

将以下行添加到文件底部crontab

@reboot /bin/sleep 10; /var/tmp/test.sh >> /Users/<YOURUSERID>/test_sh_log.txt 2>&1 

分解一下:

  • @reboot:告诉cron系统启动时运行以下命令

  • /bin/sleep 10告诉cron在运行下一个命令之前休眠 10 秒。这可能不是必需的,但如果您使用网络服务或挂载文件系统,则sleep在脚本调用它们之前,系统将有时间让它们运行。

  • /var/tmp/test.sh 是您的脚本,已正确设置执行权限。

  • >> /Users/<YOURUSERID>/test_sh_log.txt 2>&1 重定向任何输出到方便的日志文件;2>&1同时获取stdout& stderr(错误消息)。这通常有助于故障排除,或者如果您希望 shell 脚本在运行时输出任何内容。

一旦你reboot有了 iMac,test.sh 就应该开始运行。

最后:

苹果 ”安防措施“似乎在不断变化,可能需要采取额外的步骤才能让苹果满意。这些步骤的必要性取决于太多因素,无法在此介绍。如果您遇到困难,请在此处发表评论,我们将做出回应。

相关内容