起動/起動時にシェルスクリプトを起動しようとしています。 /etc/rc.local ファイルを編集しようとしましたが、動作しません。
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/root/ark/startup.sh #Added
exit 0
それ自体が魅力のように動作するスクリプトを実行する必要があります。 (スクリーンセッションが始まります...)
これを達成するために使用できる助けや他の方法はありますか?
答え1
忘れてrc.local
...
〜のようにCentOS 7について話しています。:
Debian 8 を使用しています。あなたは体系化しました。 van Smoorenburg System 5クローンの/etc/rc.local
互換性メカニズムである以前のバージョンとの互換性メカニズムであるため、systemdのデュアル以前のバージョンとの互換性メカニズムです。rc
以下のハイパーリンクで接続されたAskUbuntuの質問の混乱が示すように、/etc/rc.local
使用中に状況が深刻に間違っている可能性があります。他の場所では、人々はrc.local
ブートローダの同じ場所であるsystemdの実行方法がおなじみの実行方法と異なることに驚きました。他の人たちは、rc.local
以前の作業方法を予想して構築したことが、新しいudev
ルール、NetworkManager systemd-logind
、またはsystemd-resolved
さまざまな「スイート」などによって完全に壊れたことに驚きました。
忘れてrc.local
...これは行く道ではありません。 Debian 8があります。したがって、適切なシステムサービスユニットを作成し、以前のバージョンとの互換性レベルが異なる時点で起動しないでください。 (Ubuntuでは3回削除され、rc
その後System 5クローンは独自に複製されました。二重10年以上前にスタートアップに置き換えられ、その後systemdに置き換えられました。 )
スクリプトを作成し、systemdサービスユニットからスクリプトを呼び出してstartup.sh
systemdでこのプロセスを開始しないでください。このアイデアはすぐに次のような結果をもたらします。システム化された恐怖の家地域。プロセスの設定と実行をできるだけ直接説明するサービスユニットを作成します。ラッパーシェルスクリプトの制限が発生した場合にのみこの方法を使用してください。ラッパーシェルスクリプトを確認してください少なくともexec
最終デーモンをオーバーライドするために使用されます。
あなたはそのサービスが何であるかを言っていませんでした。を使用すると言われましたがscreen
、これは貧しい人のデーモン監督者として悪用されることが多く、悪用される可能性が高いです。いいえ次の環境でサービスを実行する方法実際サービスマネージャ。そこで「箱舟」という言葉を見ることができ、この言葉は乱用の可能性とともにscreen
二つの事実を思い出させます。
- systemdに移行するための最初の規則。
- この規則は再び証明された。他の人が私より4日前にすでにサービスユニットを作成しています。https://unix.stackexchange.com/a/212117/51322015年に戻りました。
追加読書
- https://unix.stackexchange.com/a/233581/5132
- ジョナサンデボインポラード(2015)。 システム化された恐怖の家。よく与えられる答えです。
答え2
完全なsystemdを使用する場合、標準のsysvinitスクリプトは無視されます。 sysvinitスクリプトを使用するには、systemd-shimをインストールする必要があります。