Cron рабочих мест и буфера обмена

1

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.

Bemmu
источник
Какой пользователь использует Cron для выполнения вашего скрипта? Вы можете повлиять на это?
Даниэль Бек

Ответы:

1

Почему бы не отказаться от сценария и использовать рабочий процесс Automator (или скомпилированное приложение), поскольку у них есть специальный метод для извлечения текста из PDF-файлов в текстовый файл.

введите описание изображения здесь

Вы также можете попробовать отключить Cron и запустить свой скрипт через 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>
PeelMan
источник