LINUX.ORG.RU

Объясните поведение systemd

 


0

1

Есть .service, который держит скрипт, из которого периодически вызывается другой скрипт, примерно таким образом:

scriptname 2>/dev/null

По идее, я ожидаю, что в логах юнита будет стандартный вывод, на практике вижу также вывод stderr, который вроде бы как завёрнут в /dev/null.

Что происходит?

systemd в юнитах не воспринимает синтаксис bash'а. Это вам не скрипты на bash'е. Тут только обходить огородами. Например, так:

/bin/sh -c 'scriptname 2>/dev/null'

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от intelfx

Раз:

[Unit]
Description=for intelfx example
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/cmt
User=pi

[Install]
WantedBy=multi-user.target

/usr/bin/cmt

#!/usr/bin/env bash

action='/home/pi/script.sh 2>/dev/null &'


while true; do
    if [[ условия старта ]]; then
        DISPLAY=:0 $action
    else
        echo "Kicked"
    fi
done

Dispetcher14 ★★★★★
() автор топика
Ответ на: комментарий от Dispetcher14

А теперь почитай, что в bash выполняется раньше — подстановка переменных или перенаправление ввода-вывода.

$ cat test2.sh
#!/bin/bash

echo "test2: $0 $*"

$ cat test.sh
#!/bin/bash

action="/home/operator/test2.sh 2>/dev/null"

DISPLAY=:0 $action

$ ./test.sh
test2: /home/operator/test2.sh 2>/dev/null
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Тут вот какой момент.

Когда я дёргаю эту штуку

/home/pi/script.sh 2>/dev/null &
вручную из терминала, с выводом всё как надо. Или я всё таки не врубился?

Dispetcher14 ★★★★★
() автор топика
Ответ на: комментарий от Dispetcher14

Ты не врубился. Перечитай ещё раз мой пример, который я процитировал.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Dispetcher14

вручную из терминала, с выводом всё как надо

Напиши в скрипте eval $action. Только с eval надо осторожно, а то мало ли, что оно там eval.

AS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.