Execute o script na primeira inicialização

4

Eu quero criar um script que será executado apenas na primeira inicialização e nunca mais. Estou trabalhando em uma VM que será convertida em um modelo, portanto, quero ter certeza de que posso criar um script que possa ser executado automaticamente quando o servidor for inicializado.

Eu tenho algumas pistas que eu posso colocar um script em /etc/init.d/firstboot por exemplo, e usar o chkconfig para fazê-lo em rhel (que parece não estar disponível no Ubuntu), mas eu preciso fazê-lo no Ubuntu 14 e 16, alguma ideia? - posso supor que, se eu colocar um script em /etc/init.d, ele será executado na inicialização?

Eu estive no google mas vejo muitas coisas diferentes. Por exemplo, vi algo semelhante para o rhel:

/etc/init.d/yourscript:
#!/bin/bash
# chkconfig: 2345 9 20
# description: long description

case "$1" in
  start)
    Do your thing !!!
    chkconfig yourscript off
  ;;
  stop|status|restart|reload|force-reload)
    # do nothing
  ;;
esac

qualquer ajuda é muito apreciada

    
por user3311890 01.06.2017 / 13:04

2 respostas

0

Você pode iniciar seu script com o systemd. Escreva uma unidade do sistema como:

[Unit]
Description=yourscript
ConditionPathExists=/path/to/some/file

[Service]
Type=oneshot
ExecStart=/path/to/yourscript

[Install]
WantedBy=multi-user.target

Depois de ativar esta unidade, ela só deve iniciar se o arquivo em ConditionPathExists existir. Você poderia escrever seu script para remover esse arquivo depois de executar. Verifique systemd.unit que existem mais verificações, por exemplo, ConditionFileNotEmpty ou ConditionDirectoryNotEmpty que também pode ser útil.

    
por 01.06.2017 / 14:01
-1

Ele não será executado na inicialização apenas porque está em /etc/init.d /.

O script pode estar em /etc/init.d, mas você terá que initctl reload-configuration ou você pode colocar o script onde quiser e echo "/path/to/yourscript start &" >> /etc/rc.local .

Em seguida, basta adicionar chmod -x $0 no final da seção inicial e ele nunca será executado novamente.

Ou, se preferir que o script seja excluído, use rm $0 . Se você optou pela maneira initctl, use rm $0 && initctl reload-configuration para desativar.

    
por 01.06.2017 / 13:38