Задание Cron не работает с псевдонимом в сценарии bash

Возможно, существует более простой способ сделать это с помощью самого tmux, не прибегая к сценариям оболочки. Но я заработал, объединив пару скриптов.

Первый сценарий выводит имя первого неприсоединенного сеанса. Это,tmux-first-unattached-session:

#!/usr/bin/env sh
# Print the name of the first tmux session that has no clients attached.
tmux ls -F '#{session_name}|#{?session_attached,attached,not attached}' 2>/dev/null | grep 'not attached$' | tail -n 1 | cut -d '|' -f1

Второй скрипт присоединяется к первому неприсоединенному сеансу или новому сеансу:

#!/usr/bin/env sh
# Attach to the first tmux session that has no attached clients.
# If there are no unattached sessions, then create a new session.
tmux attach -t `,tmux-first-unattached-session` 2> /dev/null || tmux
0
07.05.2021, 09:17
1 ответ

Удалите все экземпляры /bin/bashв ваших crontabзаданиях; замените его одним SHELL=/bin/bashв crontab.

Оболочка

cronпо умолчанию — /bin/sh. bin/shне поддерживает использование аббревиатуры ~для домашнего каталога пользователя, и ее использование здесь может привести к «плохим привычкам». Рассмотрите возможность замены всех экземпляров ~полным путем; например./home/theuser/.bash_aliases

Мне вообще непонятно, почему вы используете root's crontab(, то естьsudo crontab -e)-LTspice обычно не требует повышенных привилегий для запуска. Отбросьтеsudo-используйте своего пользователя crontab.

Наконец, поскольку задания cronпо умолчанию отправляют все выходные данные в /dev/null, рассмотрите возможность использования перенаправления для захвата выходных данных stderr:

.
0 4 * * * * /bin/bash ~/Documents/auto.bash 2>~/Documents/error.log
-1
28.07.2021, 11:34

Теги

Похожие вопросы