首页 > 解决方案 > 每天使用 launchd 运行 shell 脚本(具有 sudo 权限)

问题描述

我正在尝试设置两个启动代理,每个代理每天运行一个 shell 脚本 - 目标是在一天开始时延长“显示睡眠”设置,并在晚上减少它。这是我的已启动 .xml 文件。它的位置是:/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.extendsleep</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/extend-sleep.sh</string> 
    </array>
    <key>StartCalendarInterval</key>
    <array>
      <dict>
        <key>Weekday</key>
        <integer>1</integer>
        <key>Hour</key>
        <integer>8</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
      <dict>
        <key>Weekday</key>
        <integer>2</integer>
        <key>Hour</key>
        <integer>8</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
      <dict>
        <key>Weekday</key>
        <integer>3</integer>
        <key>Hour</key>
        <integer>8</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
      <dict>
        <key>Weekday</key>
        <integer>4</integer>
        <key>Hour</key>
        <integer>8</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
      <dict>
        <key>Weekday</key>
        <integer>5</integer>
        <key>Hour</key>
        <integer>8</integer>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
    </array>
  </dict>
</plist>

这是我要执行的 shell 脚本。它的位置是:/usr/local/bin/extend-sleep.sh.

#!/bin/sh
su systemsetup -setdisplaysleep 60

我所知道的是脚本没有成功更改显示睡眠设置。我猜可能发生的一件事是权限错误,因为该systemsetup命令需要 sudo,但我不确定。有什么想法吗?

我正在运行 Mac OS 11.5.2 (Big Sur)

标签: macosshelllaunchd

解决方案


推荐阅读