2012-07-29 02:04:52 +0000 2012-07-29 02:04:52 +0000
82
82

Como executar um comando no ecrã e destacar?

Como é que posso obter ecrã para executar um comando e depois destacar (isto é, automaticamente num único script sem qualquer outra entrada para além do início do script)? por exemplo, eu corro myscript.sh e ele inicia automaticamente uma sessão de ecrã, executa um comando e depois destaca-se.

Antwoorden (5)

120
120
120
2012-07-29 02:20:11 +0000

Esta é fácil:

screen -d -m yourcommand
49
49
49
2012-07-29 02:10:53 +0000

Para executar um único comando no ecrã e desacoplar, pode tentar:

screen -dm sleep 10

Para executar comandos múltiplos, tente:

screen -dm bash -c "sleep 10; myscript.sh"

Por favor note que quando um programa termina, o ecrã (por defeito) mata a janela que o continha.

Se não quiser que a sua sessão seja morta depois de terminar o script, adicione exec sh no final, por exemplo

screen -dm bash -c 'sleep 5; exec sh'

Para listar todas as suas sessões, tente:

screen -list

Relacionadas: Iniciar ecrã Unix, comando Executar, Destacar .

16
16
16
2016-11-06 08:03:26 +0000

Para iniciar uma nova sessão em fundo com o nome ‘sonolento’

screen -S sleepy -dm sleep 60

Para matar a sessão ‘sonolento’

screen -S sleepy -X quit
3
3
3
2018-03-14 05:40:50 +0000
screen -dmS screen_session_name bash -c 'echo "doing stuff"; exec bash'
0
0
0
2019-04-29 09:38:39 +0000

acontece-me quando carrego no controlo c (sig int) para sair do meu programa. sai de toda a bash. por isso encontrei isto para apanhar o SIGINT. e impedir a saída da última bash. (necessidade de digitar exit para sair)

screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"

example:

screen -dmS "status_updates" bash -c "trap 'echo gotsigint' INT; cd /opt/status_update ; forever index.js ; bash"

Acho útil usar o cron para correr programas nodejs no arranque. e para correr o ecrã no momento do arranque. no cron existem eventos especiais sintax @reboot event

to edit cron, execute:
crontab -e

then type
@reboot screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"