我想让我的电脑每晚11点45分将它的音量调到特定的水平。我正在运行OS X 10.11.4。我可以通过终端手动设置音量
osascript -e "set Volume 1.7"
或作为带
的脚本set volume 1.7
我希望它能在夜间安排。很难在网上找到任何超级过时的东西。我真的不想使用iCal。从我在网上发现的是开始的方式,但作为一个菜鸟我不知道从哪里开始。
我看到在/ Library / LaunchAgents中使用.plist的事情所以我找到了一个漂亮的plist生成器Launched.zerowidth.com但是我在plist中放入了什么样的代码来获得所需的效果?我也在质疑,如果有任何用户登录,这是否是正确的执行路径。
我在这里走错路吗?我愿意接受任何想法,但我不想要第三方应用程序,我必须一直保持开放。
谢谢,
Naboo
答案 0 :(得分:14)
请考虑使用cron守护程序。它默认出现在osx中。
创建音量调整脚本
#!/bin/bash -l
/usr/bin/osascript -e "set Volume 1.7"
然后在crontab中添加新行。
crontab -e
默认情况下,它将在vi(m)编辑器中打开。但您可以使用
调整任何编辑器export EDITOR=/path/to/your/awesome/editor
然后将新字符串添加到crontab
0 20 * * * /path/to/volume/script.sh
鉴于命令将在每天晚上8点运行。
请在此处找到更多crontab示例https://en.wikipedia.org/wiki/Cron
答案 1 :(得分:6)
正如@TheDarkKnight指出的那样,cron已被弃用而不赞成launchd。
要使用launchd,只需将以下内容保存为com.example.volume.plist
中的~/Library/LaunchAgents/
:
<?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>com.example.volume</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>set volume 1.7</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>23</integer>
<key>Minute</key>
<integer>45</integer>
</dict>
</dict>
</plist>
然后运行launchctl load ~/Library/LaunchAgents/com.example.volume
开始。您可以通过launchctl start com.example.volume
强制执行任务。
如果您希望以root用户身份运行,请改为保存到/Library/LaunchDaemons/
。
答案 2 :(得分:0)
对于简单的单衬,使用 React.useEffect(() => {
let timeout;
if (progress === 45 && !apiCallFailedRef.current) {
callApi();
}
function callApi(){
let requestData = {
method: 'GET',
path,
};
$.ajax(testPath, {
method: 'GET',
data: { data: JSON.stringify(requestData) },
})
.done(response => {
// setLoading(false);
})
.fail(response => {
console.log('failed')
apiCallFailedRef.current = true;
timeout = setTimeout(() => callApi(), 28000);
});
}
};
// How would I clear the timeout correctly?
return () => {
clearTimeout(timeout);
};
}, [progress])
:
cron
对于较长的脚本,您可以将其另存为苹果脚本(# edit your user crontab
crontab -e
# run daily at 20:00 (8:00pm)
0 20 * * * osascript -e "set Volume 1.7"
纯文本或 .applescript
二进制文件)。然后从 .scpt
调用它:
cron
注意:虽然 Apple documentation 表示 # edit your user crontab
crontab -e
# run daily at 20:00 (8:00pm)
0 20 * * * osascript /path/to/setvolume.applescript
比 launchd
更受欢迎,但 cron
到目前为止仍然得到完全支持,即使它已被“弃用”多年。可以使用 cron
直到它被真正移除(可能永远不会被移除)。