Recentemente, migrei meus upstart
scripts para systemd
, ao contrário upstart
, não vejo nenhuma saída tty
para os serviços sendo iniciados / parados . Para obter esse feedback visual, adicionei algo como
echo "Starting $UNIT_NAME" > $MYTTY
Onde MYTTY
é uma variável de ambiente que estou configurando na saída do tty
comando. Eu tenho 20 serviços estranhos, mas de alguma forma nem todas as mensagens estavam aparecendo no meu tty. Então eu mudei a linha (apenas para verificar) para:
echo "Starting $UNIT_NAME" | write myuser $MYTTY
E com isso, vejo todas as mensagens sendo exibidas! (claro, com o adicional
Message from <user>@<hostname> on <term> at <time> ... EOF
Apenas para verificar se write
está fazendo algo especial, verifiquei o código bsdutils
e não encontrei nada de especial, apenas escrevendo caractere por caractere (com algum tratamento para caracteres especiais e CR, LF)
O que há de errado com :
echo "Starting $UNIT_NAME" > $MYTTY
? Eu também tentei:
echo -e "Starting $UNIT_NAME\r\b" > $MYTTY
etc. Mas ainda não vejo mensagens de todos os serviços na tela! É porque systemd
inicia todos os serviços em paralelo que algumas gravações no tty desaparecem!?
--
--EDITAR--
a rodada seguinte parece funcionar! mas eu quero saber se isso é seguro ou há algo melhor/simples
mkfifo /tmp/ttyfifo
(cat > $MYTTY < /tmp/ttyfifo &) && echo -e 'Starting $UNIT_NAME\r\n' > /tmp/ttyfifo
em teoria sim, como as solicitações parecem estar enfileiradas e o descritor não está bloqueado, é melhor usar algo como Multiplexador TTYBUS , pois gravações simultâneas em um arquivo/fifo podem atrapalhar as quebras de linha etc.