Назад | Перейти на главную страницу

эхо-сообщение не приходит на терминал с systemd

У меня есть служба systemd, скажем xyzWarmup.service.

Вот служебный файл

[Unit]
Description=Xyz agent.
After=fooAfter.service
Before=fooBefore1.service
Before=fooBefore2.service

[Service]
# During boot the xyz.sh script reads input from /dev/console.  If the user
# hits <ESC>, it will skip waiting for xyz and abc to startup.
Type=oneshot
StandardInput=tty
StandardOutput=tty
ExecStart=/usr/bin/xyz.sh start

RemainAfterExit=True
ExecStop=/usr/bin/xyz.sh stop

[Install]
WantedBy=multi-user.target

Ниже приводится часть xyz.sh.

#! /bin/bash                                                                                                                                                                                               
#                                                              
### BEGIN INIT INFO                                                                                                                                                                                         
# Required-Stop: Post                                                                                                                                                                                       
### END INIT INFO                                                                                                                                                                                           

XYZ=/usr/bin/Xyz
prog="Xyz"
lockfile=/var/lock/subsys/$prog
msg="Completing initialization"

start() {
     # Run wfw in background                                                                                                                                                                                 
    ulimit -c 0
    # wfw has a default timeout of 10 minutes - just pick a large value                                                                                                                                     
    wfw -t 3600 xyz abc >/dev/null 2>&1 &
    PID=$!

    # Display the message here after spawning wfw so Esc can work                                                                                                                                           
    echo -n $"$msg (press ESC to skip): " > /dev/console

    while [ 1 ]; do
        read -s -r -d "" -N 1 -t 0.2 CHAR || true
        if [ "$CHAR" = $'\x1B' ]; then
            kill -9 $PID 2>/dev/null
            # fall through to wait for process to exit                                                                                                                                                      
        fi

        STATE="`ps -p $PID -o state=`"
        if [ "$STATE" = ""  ]; then 
            # has exited                                                                                                                                                                                    
            wait $PID 2>/dev/null
            if [ $? -eq 0 ]; then
                echo "[ OK ]" 
                echo
                exit 0
            else
                echo "[ FAILED ]"
                echo "This is failure"  
                               exit 1
            fi
        fi
    done
}

Я не вижу ни одного эхо-сообщения после этой строки в коде "if [" $ STATE "=" "];". Когда этот сценарий запускается во время загрузки, я просто получаю следующее сообщение от сценария

 Completing initialization (press ESC to skip): 

Я не вижу «[OK]» или «[FAILED]» на моем экране.

Когда я использовал этот сценарий в качестве исходного сценария в Fedora14, я видел эти сообщения. Однажды я перешел на systemd. Я начал замечать эту проблему.

Версия systemd: systemd-201-2.fc18.9.i686 и systemd.default_standard_output = tty

Пожалуйста, помогите.