Pbpaste, кажется, не работает как ожидалось, когда я выполняю его от задания крона.
У меня есть applescript, который открывает файл PDF в Предварительном просмотре и отправляет ему команду копии и затем закрывает Предварительный просмотр. Затем я хотел бы вставить это в файл, pbpaste> pasta.txt. Это все работает отлично, когда я выполняю его как сам.
Однако, если я поместил его как задачу в crontab-e, это действительно работает правильно и даже создало выходной файл, но содержание пусто. Это - как будто независимо от того, что контекст, в котором происходит выполнение, имеет другое понятие буфера обмена.
Мой crontab похож на это:
* * * * * cd /Users/bemmu/Public;osascript yeah.script
И yeah.script похож на это:
do shell script "open tiliote.pdf"
delay 2
tell application "Preview"
activate
delay 2
tell application "System Events" to keystroke "a" using {command down}
delay 2
tell application "System Events" to keystroke "c" using {command down}
delay 2
tell application "System Events" to keystroke "q" using {command down}
delay 2
end tell
do shell script "pbpaste > pasta.txt"
Ожидаемый результат состоит в том, что pasta.txt содержал бы файл PDF в тексте и именно это происходит, если я запускаю этот скрипт вручную. Однако, если крон выполняет его, pasta.txt создается, но ничего не содержит (размер 0).
Я вижу, что копия определенно успешна, когда выполнено от крона, поскольку я могу вставить его сам позже. Это просто, что pbpaste, кажется, не работает от крона.
Почему не угробили сценарий и используют рабочий процесс Automator (или скомпилированное приложение), так как у них есть специализированный метод для извлечения текста от PDFs в текстовый файл.
Вы также могли бы попытаться угробить Крон и запустить Ваш скрипт через LaunchAgent. Пример:
~/Library/LaunchAgents/us.peelman. Terminal.plist
<?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>Disabled</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>us.peelman.TerminalLauncher</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal</string>
</array>
</dict>
</plist>