Поскольку вывод в stderr приведен ниже, это означает, что переменная $ AEM_CONFIG
не устанавливается. Вот почему работа терпит неудачу.
/global/appaem/aem/bin/aem-test.sh: line 5: /aem-wrap.conf: No such file or directory
Чтобы решить эту проблему, измените сценарий, указав источник соответствующего файла, который устанавливает $ AEM_CONFIG
.
Как вы указываете, переменная определена в .bashrc, см. cron игнорирует переменные, определенные в «.bashrc» и «.bash_profile» . Вам нужно добавить в свой скрипт такую строку, как source ~ / .bashrc
. Пример:
#!/bin/bash
declare -r PATH='/sbin:/bin:/usr/sbin:/usr/bin'
source ~/.bashrc
source $AEM_CONFIG/aem-wrap.conf
Arch Linux поставляет btrfs-progs с файлом блока .timer для btrfs-scrub
, который можно активировать с помощью:
systemctl enable btrfs-scrub@-.timer
Тире ("-") после символа @ используется для обозначения корневого каталога, подробнее об этом смотрите на странице ArchWiki:
https://wiki. archlinux.org/index.php/Btrfs#Start_with_a_service_or_timer
Чтобы проверить статус, используйте:
systemctl list-timers
Или:
journalctl -u btrfs-scrub@-.{timer,service}
Будучи добродетельно ленивым сисадмином, я придумал следующее, что запустит и включит btrfs-scrub@XXX.timer
на всех смонтированных btrfs
файловых системах:
awk '$3=="btrfs" { system("systemd-escape " $2 "| cut -c2-") }' /etc/fstab | while read -r fs; do
[[ -z $fs ]] && fs=- # Set to '-' for the root FS
sudo systemctl enable btrfs-scrub@"$fs".timer
sudo systemctl start btrfs-scrub@"$fs".timer
done
Благодарность @Head_on_a_Stick за указание правильного направления.