I have recently migrated my upstart
scripts to systemd
, unlike upstart
, I don't
see any output on the tty
for services being started/stopped. To get that visual
feedback, I added something like
echo "Starting $UNIT_NAME" > $MYTTY
Where the MYTTY
is an environment variable I am setting from output of tty
command.
I have 20 odd services but somehow not all messages were appearing on my tty. So I changed
the line (just to check) to:
echo "Starting $UNIT_NAME" | write myuser $MYTTY
And with this, I see all the messages being displayed! (of course, with the additional
Message from <user>@<hostname> on <term> at <time> ... EOF
Just to check if write
is doing something special, I checked the code in bsdutils
and
I didnt find anything special, its just writing character by character (with some handling
for special chars and CR, LF)
What is wrong with :
echo "Starting $UNIT_NAME" > $MYTTY
? I also tried:
echo -e "Starting $UNIT_NAME\r\b" > $MYTTY
etc. But still I don't see messages from all the services on the screen!
Is it because systemd
starts up all services in parallel that some
writes to the tty vanish !?
--
--EDIT--
the following round about way seems to work! but I want to know if this is safe or is there something better/simpler
mkfifo /tmp/ttyfifo
(cat > $MYTTY < /tmp/ttyfifo &) && echo -e 'Starting $UNIT_NAME\r\n' > /tmp/ttyfifo