[systemd-devel] echo message not coming on terminal with systemd

Navneet Sinha nnavneetsinha1001 at gmail.com
Mon Dec 28 00:08:54 PST 2015


On Fri, Dec 18, 2015 at 6:10 AM, Navneet Sinha <nnavneetsinha1001 at gmail.com>
wrote:

> I have systemd service, say xyzWarmup.service.
>
> Here is the service file
>
>     [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
>
>
> Following is the part of 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
>     }
>  I am unable to see any echo message, after this line in code "if [
> "$STATE" = ""  ];". When this script runs during boot I just this the
> following message coming from the script
>
>      Completing initialization (press ESC to skip):
>
One important update: ( I damn sure, now someone from you can help me out )

*Updated: This is the additional output which I see after the previous line*

*[[  OK  ] Started Xyz agent.\n' *

*If you carefully see, there are 2 opening square brackets( '[' ), from
this it looks like that systemd is overwriting the log messages. The first
"[" comes from the initscript's "[ OK ]". Can somebody explain this better
? *

> I don't see "[ OK ]" or "[ FAILED ]" on my screen.
>
> When I was using this script as initscript in Fedora14, I used to see
> these messages. Once, I have shifted to systemd. I have started seeing this
> issue.
>
> systemd version is :  systemd-201-2.fc18.9.i686 and
> systemd.default_standard_output=tty
>
> Kindly help.
>
> Thanks
> Navneet
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20151228/c2975554/attachment.html>


More information about the systemd-devel mailing list