Eu sei como executar um programa na inicialização, no login (Sistema > Preferências > Aplicativos de inicialização) ou ao abrir um shell (.bashrc). eu também li"executar script após a área de trabalho ser carregada?". O que percebi é que cada aplicativo adicionado aos Aplicativos de Inicialização estende o tempo até que a área de trabalho se torne utilizável. Então, estou procurando uma maneira de iniciar todos os "bons para ter" a partir de um script (que está funcionando) que é executado após o término da inicialização normal.
Não estou totalmente claro como chegar lá. Eu usaria um segundo script que chama o primeiro com & (para que seja executado em segundo plano) e adicione uma espera (alguns segundos | evento específico) ao primeiro?
Responder1
Basta ligar sleep
no início do seu script "nice-to-haves". Isso não deve impedir o carregamento da área de trabalho. Você também pode acelerar as coisas em hardware multi-core colocando cada processo em segundo plano.
por exemplo
sleep 20s
<something that takes a long time> &
<this can now start immediately> &
...
Os dois comandos serão executados em paralelo, mas aguardarão 20 segundos antes de iniciar. Você pode usar "m", "h" ou "d" para especificar minutos, horas ou dias se alguns segundos não forem o que você tinha em mente. =)
Responder2
Se você for lançar algo caro, lance-o em segundo plano com atraso. Por exemplo
after 20s find-all-the-dirty-dishes &
after 1m find ~ -name '*~' -mtime +30 -exec rm '{}' ';'
onde você terá que se implementar after
, mas pode ser algo assim
#!/bin/sh
sleep "$1"
shift
exec "$@"