Qual é a maneira mais limpa de programar o comando autoexec.bat like no Linux?

1

Eu quero criar um pequeno script para o meu sistema Linux que faria algumas coisas simples na inicialização do PC. O script provavelmente será o Python, mas talvez eu recorra a C ou shell.

O problema é que sou um desenvolvedor do Windows e os tutoriais na Web parecem suspeitos.

Alguns deles fecham todos os descritores de arquivos, outros não, alguns implementam reinicialização, force-restart, outros não. Com os posteriores aparentemente sendo contra a especificação. Então há toda a coisa gid, que me confunde.

Então, basicamente, eu não sei qual base de script eu posso usar para um daemon estável, e quais são o tipo funciona-em-minha-máquina-por-isso-correto.

Então me deparei com o link que parece ser um processo oficial que cria daemons SEGURO Mas, novamente, são scripts no init.d que fazem o start-up, se bem entendi, não existem processos.

Em seguida, há "nice", que deve ser usado para tarefas de longa duração, se eu acertar, e provavelmente algumas outras dicas.

Então estou perdido aqui. Alguém pode me dar alguns avisos, don'ts e talvez uma idéia de onde procurar as informações on-line?

P.S. O script que eu vou chamar terá que chamar os processos, isso significa que o daemon vai bifurcar para cada um deles?

    
por Coder 08.09.2011 / 18:36

7 respostas

0

Bem, parece que a nova maneira de fazer as coisas nas distribuições mais recentes é usar o Upstart - link

Isso deve permitir a execução de tarefas em paralelo, bem como a sintaxe limpa. Os procedimentos init do SystemV através do init.d e rc.d supostamente estão lá apenas para compatibilidade com versões anteriores.

Ler o manual parece que o Upstart é uma solução muito poderosa e limpa, mas ainda tenho muito o que estudar.

    
por 09.09.2011 / 18:19
7

Existem muitas maneiras; Sugiro usar a sequência sepcial do cron @reboot .

 $ crontab -e

 @reboot /path/to/my/command.sh
    
por 08.09.2011 / 18:41
3

Para executar seu script na inicialização, mantenha seus arquivos de script no

/etc/rc#.d/

diretórios. Onde # é o nível de execução. Em todos os sistemas, o nível 0 a 6 é suportado. Os níveis de execução podem ser os seguintes:

0: Halt
1: Single User Mode
2: Basic Multi-user mode (No networking)
3: Basic text mode (multiuser)
4: Multi-user mode
5: GUI based multiuser mode
6: Reboot

Esses scripts são iniciados automaticamente, dependendo de sua letra inicial. Scripts que começam com

S: start at system startup
K: start during system shutdown

Se scripts de nome comum estão lá como

S<name>
K<name>

O script prefixado por K será executado antes disso com o prefixo S.

    
por 08.09.2011 / 19:03
1

para distribuições baseadas no Debian:

/etc/rc.local

coloque seu nome de script lá e não esqueça o caminho completo

    
por 09.09.2011 / 18:01
0

.bashrc e .bash_profile são bons lugares para começar, se o seu por usuário. Para o Ubuntu você pode adicionar um trabalho de upstart (se estiver disponível no Hardy Heron) e configurá-lo em seu nível de execução desejado. Se isso foi pré-arranque, você pode configurá-lo nos scripts de inicialização do System V.

    
por 08.09.2011 / 18:40
0

Se você só precisa fazer algumas coisas na inicialização, o melhor seria adicionar seu próprio script init.d. Alguns crons (como o fcron) também permitem a execução de trabalhos na inicialização.

Se você escreve em Python ou o que não importa, desde que seja ELF ou hashbang ( #! ) na primeira linha, ele será tratado e executado da mesma forma.

    
por 08.09.2011 / 18:42
0

Surpreendente! por que ninguém mencionou /etc/rc.d ? Você pode colocar seu script em /etc/rc.d e esses scripts são executados automaticamente no momento da inicialização.

    
por 08.09.2011 / 18:52