Прежде всего создайте файл для проверки задания Cron:
$touch echo.sh
Введите свой сценарий в файл и сначала попробуйте его вручную, как только сценарий будет выполнен правильно, вы можете запланировать его для задания Cron.
Установить разрешение:
$ chmod +x /path/to/file/echo.sh
Пример задания Cron:
crontab -e
* * * * * /path/to/file/echo.sh
Сохранить запись.
Вы также можете проверить вывод для cron:
grep CRON /var/log/syslog
OR
tail -f /var/log/syslog | grep CRON
Обратите внимание, что это поведение xsel
в еще не выпущенных версиях xsel
. Внесено это изменение в 2008 году.
Обычно выделение X содержит текст, не оканчивающийся символами новой строки. Если вы сбросите его как есть, это приведет к отображению незавершенной строки. В старых оболочках, таких как bash
, на дисплее отображается:
bash-4.4$ xsel -b
xselbash-4.4$
(здесь при выборе CLIPBOARD, содержащем xsel
). Следующая подсказка добавляется к содержимому выделения.
Современные оболочки, такие как zsh
или fish
, работают над этим, обнаруживая, когда результат последней команды не заканчивается символом новой строки, и затем дают вам визуальную индикацию.
С zsh
:
prompt% xsel -p
xsel%
prompt%
(обратное видео %
после xsel
указывает на отсутствие новой строки).
С рыбой
:
prompt ~> xsel -p
x⏎
prompt ~>
Эти новые xsel
сами дают вам визуальную индикацию:
bash-4.4$ xsel -b
xsel
\ No newline at end of selection
bash-4.4$
Теперь это полезно, только если xsel запускается по запросу старого интерактивная оболочка.
В частности, указание «Нет новой строки» нежелательно при использовании как:
selection=$(xsel -b)
(где stdout xsel
- канал) или:
xsel -b > selection.txt
(где xsel Стандартный файл
- это обычный файл).
Вот почему xsel
выводит эту индикацию только тогда, когда stdout идет на tty-устройство.
Итак, где это отображается? Ну, намерение состоит в том, чтобы отобразить его на этом устройстве tty. Если вы запустите его под strace, вы увидите:
$ strace -e write ./xsel -b
write(1, "xsel", 4xsel) = 4
write(2, "\n\\ No newline at end of selectio"..., 34
\ No newline at end of selection
) = 34
+++ exited with 0 +++
Что подтверждает источник : он выводится на stderr. И когда stdout не является терминалом:
$ strace -e write ./xsel -b > /dev/null
write(1, "$ strace -e write ./xsel -b | ca"..., 104) = 104
+++ exited with 0 +++
Он вообще не выводится. Теперь можно утверждать, что выводить на stderr немного глупо, когда намерение состоит в том, чтобы вывести это уведомление на терминал (stderr может быть перенаправлен, например, в файл журнала, как в xsel -b 2> logfile
), но:
xsel -b 2> / dev / null
, что будет более эффективно, чем xsel -b | кот
. isatty ()
вернет истину для последовательного устройства, которое не подключено к терминалу. Достаточно просто проверить с помощью:
xsel -b > xsel.out 2> xsel.err
Сообщение будет в одном из двух файлов. Если он находится в xsel.out
, то сообщение проходит через стандартный вывод; если он находится в другом файле, то это стандартная ошибка; если он в другом, то происходит что-то очень странное, и вам нужно долго и серьезно поговорить с вашим ядром.