如何在启动/登录/其他时间内自动运行/停止/重新发布应用程序?
-
16-10-2019 - |
题
如何制作脚本或应用程序以在系统被启动时自动运行或停止运行,用户在特定时间,附加磁盘等时登录?
解决方案
GUI方法
如果您希望在用户登录时运行某些东西,那么最简单的方法是使用GUI。你可以
- 去
System Prefs > Accounts > Login Items
屏幕,并在此处添加该项目- 单击
+
象征 - 拖动
.app
上窗格
- 单击
- 在码头中,提出应用程序上下文菜单,选择
Options
, ,然后选择Open at Login
启动方法
如果您想启动不是 .app
, ,或者您想对启动它有更多的控制权,例如:
- 在特定时间或指定间隔
- 如果崩溃,不断重新启动
- 与用户登录无关
- 作为网络访问的函数
- 仅在另一个过程运行时运行
- 当文件添加到文件夹中时
- 等等
然后,您想使用 技术解决方案 那是 launchd
.
设置一个最简单的方法 launchd
配置文件是使用工具来帮助。在写作时,最受欢迎的方法是 林肯 (从SourceForge获得较旧的免费版本)或 PLIST网站 工具。
手工编码
如果您不想使用Lingon或PLIST网站,并且只想使用系统上可用的原始工具,则可以编写自己的 launchd
plist
用手
这是我运行Someapp的启动脚本 连续 系统启动后(独立于用户登录)。它在/system/library/lunageentents/中,并称为someapp.restart.plist。如果它是根据用户登录运行的,则可以将其存储在〜/library/lunageentagents/
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
加载一次
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
- 这
RunAtLoad
选项将启动该应用程序,首次启动CTAUNTL运行此操作。 - 这
KeepAlive
如果该应用程序崩溃,选项将重新发布该应用程序。 - 这
StartCalendarInterval
会在一定时间运行它。据推测,这与前两个相互排斥,但包括以表明可以做什么launchd
- 启动CTCL将在重新启动后运行。
通过尝试Lingon或阅读MAN页面,可以找到许多其他选择 launchctl
, launchd.plist
, plist
, launchd.conf
, , ETC。
其他提示
林肯仍然有效。我上周只是使用它来创建一个“计划的任务”。下载后,我必须使用其自动上层器以获取最新版本,但效果很好。
如果仅在启动系统时必须运行,只需使用 您的帐户偏好窗格的登录项目选项卡中的系统首选项。
如果是脚本,请使用AppleScript编辑器将其保存为应用程序。如果不是AppleScript脚本,您仍然可以使用AppleScript来运行这样的脚本:
do shell script "your script here"
不要忘记登录。
尽管它们作为root运行,但您应该能够使用类似的内容使其执行$ home/.loginhook脚本:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
然后只需将您想要的任何命令添加到〜/.loginhook
另外,尽管“启动”是“ Mac Way” crontab仍然是一个非常可行的选择,并且比XML启动文件更容易手工编辑。
就个人而言,我很高兴为5美元支付 林肯.
在指定时间运行应用程序可以在ICAL中轻松完成,因为我刚刚发现了另一个论坛!
- 在您希望该应用程序打开的时间里,在ICAL中进行新活动。
- 在“警报”选择“打开文件” - 因此,您可以设置一个要打开的文件,这显然还将打开该文件类型的默认应用程序。
- 要打开一个应用程序,而不是文件,请将“ ial”下拉列表更改为“其他...”,然后选择要运行的应用程序!
要注意的一件事是,如果您有多个Mac在iCloud上共享内容,则此事件也将在这些应用程序上运行,您可能想要或可能不想要。为了使此操作仅在单个Mac上发生,您需要在“我的Mac上”日历中创建事件,您可以按照以下操作做到这一点...
- 通过悬停在日历名称上并单击将会显示的“隐藏”按钮,将所有其他iCloud或共享日历隐藏在左手条上。
- 现在右键单击(如果您是完整的Cretin,则单击选项,但仍未意识到您有多个手指,并且可以更改鼠标的首选项,以便它比其默认的“ Cretinous Brick for Cretins”状态更有用)并选择“新日历”。
- 因为所有共享日历都是隐藏的,所以此新日历将被创建为“我的Mac上”,并且将是此Mac的本地。
我只是自己发现了这一点,这两个技巧都令人惊讶,所以我想在这里分享它们。
我从这里收到了这些乐于助人的人的信息...所以谢谢你们!
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-os-x/