Pbpaste не работает должным образом, когда я запускаю его из задания cron.
У меня есть appleScript, который открывает PDF-файл в Preview, отправляет ему команду копирования и затем закрывает Preview. Затем я хотел бы вставить это в файл, pbpaste> pasta.txt. Все это прекрасно работает, когда я запускаю это как я.
Однако, если я поставлю это как задачу в crontab -e, она будет работать правильно и даже создаст выходной файл, но содержимое будет пустым. Как будто бы в каком бы контексте ни происходил бег, у него другая концепция буфера обмена.
Мой crontab такой:
* * * * * cd /Users/bemmu/Public;osascript 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 в тексте, и это то, что происходит, если я запускаю этот скрипт вручную. Однако, если cron запускает его, pasta.txt создается, но ничего не содержит (размер равен 0).
Я вижу, что копия определенно успешна при запуске из cron, так как я могу вставить ее позже. Просто pbpaste, похоже, не работает с cron.
Ответы:
Почему бы не отказаться от сценария и использовать рабочий процесс Automator (или скомпилированное приложение), поскольку у них есть специальный метод для извлечения текста из PDF-файлов в текстовый файл.
Вы также можете попробовать отключить Cron и запустить свой скрипт через LaunchAgent. Пример:
~ / Library / LaunchAgents / us.peelman.Terminal.plist
источник