выполнить оператор if через командную строку

Вот решение, с помощью которого я в итоге решил свою проблему:

while ! ip link show eth0 | grep -q 'state UP'; do
    sleep 1
done

ip link add macvlan0 link eth0 type macvlan mode bridge
ip addr add 192.168.0.240/32 dev macvlan0
ip link set macvlan0 up
ip route add 192.168.0.240/28 dev macvlan0

Однако у меня было 2 запланированных задания «загрузка -вверх» на Synology, и я получал некоторые ошибки при загрузке -. Чтобы решить эту проблему, я настраиваю эту задачу так, чтобы другая была предварительной задачей -. Другими словами, задачи выполняются последовательно, ожидая завершения предыдущей задачи перед запуском новой.

0
08.02.2020, 08:21
2 ответа

Просто сбросьте галочки и укажите полный путь к интерпретатору Python:

if (( `~/cpu_usage.txt` < 60 )); then python /path/to/program/myfile.py 100; fi

Галочки не нужны, так как оболочка выполнит команду, следующую за ключевым словом then, как задумано; тики запустят оболочку sub -, а результат/выход затем будет использоваться как команда для if-then, а это не то, что вам здесь нужно:

> if true; then echo OK; fi
> OK
> if true; then `echo OK`; fi
> OK: command not found

Изменить :по моему опыту, если вы хотите использовать его с crontab, лучше всего, если вы поместите все свои команды в сценарий оболочки и вместо этого вызовете его из crontab.

2
28.04.2021, 23:24

Может быть, разбить его на

if (( $(vmstat 1 2|awk 'END{print 100-$15}') < 60 )); then
    cd /path/to/my/program &&./python myfile.py 100
fi
0
28.04.2021, 23:24

Теги

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