我在 cron 任务方面遇到了问题。以前这个脚本在 Mac OS X 10.6 服务器上运行良好,但是当我在 Lion(客户端)上初始化它时,这个脚本停止工作。
基本上,该.bat
文件调用一个jar
文件(调用一个mysqldump
命令循环)来备份多台服务器上的多个数据库,并且如果由 shell 启动,则可以完美运行。
cd /Users/nameoftheuser/Desktop/backupper
/usr/bin/java -cp .:Backupper.jar:lib/mail.jar backupper.Main "/Users/nameoftheuser/Desktop/backupper/listasiti.txt" "/Users/nameofthe/Desktop/backupper/config.properties
但是如果 cron 启动相同的.bat
文件,则生成的数据库备份为 0 字节。
cron 条目是:
0 0 sh /Users/path/to/file.bat
我认为问题在于 cron 无法以 身份运行root
。或者还有什么其他原因?
答案1
我会按照 OS X 的方式使用 launchd 而不是 cron。您可以通过编写 LaunchAgent 来实现这一点。它基本上是 /Library/LaunchAgents 或 ~/Library/LaunchAgents 中的一个 .plist,它告诉 launchd 要运行什么脚本以及运行该脚本的触发器应该是什么。
launchd 允许您控制脚本是否应由登录用户或 root 运行。
Lingon.app是开始使用和管理 LaunchAgents 的好方法。
Apple 开发者连接手册页也可能有帮助。