web-dev-qa-db-ja.com

初回起動時にスクリプトを実行する

最初の起動時にのみ実行され、二度と実行されないスクリプトを作成したいと思います。 VMテンプレートで変換されるので、サーバーの起動時に自動的に実行できるスクリプトを作成できるようにしたいと思っています。

たとえば、スクリプトを/etc/init.d/firstbootの下に置き、chkconfigを使用してrhel(Ubuntuでは使用できないようです)でそれを行うことができますが、Ubuntu 14および16でそれを行う必要があります、 何か案は? -/etc/init.dの下にスクリプトを配置すると、起動時に実行されると想定できますか?

私はググリングしてきましたが、私は多くの異なるものを見ています。たとえば、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

どんな助けでも大歓迎です

4
user3311890

スクリプトをsystemdで開始できます。次のようなsystemdユニットを記述します。

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

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

[Install]
WantedBy=multi-user.target

このユニットを有効にすると、ConditionPathExists内のファイルが存在する場合にのみ開始されます。実行後にそのファイルを削除するスクリプトを作成できます。チェック systemd.unit このようなチェックは他にもあります。たとえば、ConditionFileNotEmptyConditionDirectoryNotEmptyも便利です。

1
duenni