jpa*_*yne 6 macos bash launchd
我有一个bash脚本,我想在OS X上使用launchd plist文件运行.我遇到的问题是bash脚本包含sudo命令,它阻止它运行.例如,我的bash脚本如下所示:
#!/bin/bash
sudo /opt/local/bin/bindfs -u user1 /Library/WebServer/Documents/user1 /vhosts/user1/public_html
sudo /opt/local/bin/bindfs -u user2 /Library/WebServer/Documents/user2 /vhosts/user2/public_html
Run Code Online (Sandbox Code Playgroud)
我的com.test.bindfs.plist文件看起来像这样(用Lingon创建):
<?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>GroupName</key>
<string>admin</string>
<key>Label</key>
<string>com.jamespayne.bindfs</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/bindfs.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我已经检查过该脚本的工作原理是在启动后运行它并输入密码,但它不会在启动时运行.launchd plist正在运行,但它出现以下错误:
sudo:没有tty存在且没有指定askpass程序
任何人都知道如何使这个工作或为什么我可能会得到这个错误.谢谢.
sudo
是一个交互式命令,要求用户输入密码才能继续。我可以想象sudo
,由于无法找到 tty,因此会出现错误而退出。
您想要的命令是su
,它是非交互式的,唯一的例外是您需要成为 root 才能运行它。但是,在您的情况下,考虑到脚本是由特权用户运行的,您可能根本不需要它?
另外你为什么要把脚本放进去/usr/bin
?馊主意; 改为使用/usr/local/bin
(或者/usr/local/sbin
如果存在的话)。
归档时间: |
|
查看次数: |
4383 次 |
最近记录: |