問題タブ [systemd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4198 参照

linux - systemd での起動中に最後に実行してスクリプト出力を出力するにはどうすればよいですか?

展開プロセス中にホストを構成し、構成スクリプトの実行内容を画面に出力しようとしています。

RHEL6 では、画面に表示したいものをエコーし​​たり、ダイアログを使用して出力を表示したりするのは簡単で、スクリプトが完了したときにのみログイン プロンプトが表示されました。

  • (スクリプト名 S99.myscript.sh の rc3.d または rc5.d フォルダーを使用しました)

RHEL7 では、このプロセスを模倣できません。rc.local は起動中に出力を表示せず、最後に実行されることも保証されていません。

スクリプトを実行する systemd サービス ファイルを作成する必要があると思います。

しかし、起動中に結果を画面に出力するにはどうすればよいですか?

また、スクリプトが終了する前にログイン プロンプトが表示されないようにするにはどうすればよいですか?

0 投票する
1 に答える
963 参照

linux - 独立した cgroup で systemd サービスから外部プログラムを実行する方法

現在の cgroup 外の systemd サービスから外部プログラムを実行する必要があります。おそらくこれを解決するツールを見つけましたsystemd-runが、まだ利用できないsystemdバージョン204で立ち往生しています。他の解決策はありますか?

私の問題をより詳細に:

アプリケーションは debian パッケージにバンドルされており、systemd サービスとしてインストールおよび実行されます。このサービスは、アプリケーションの新しいバージョンを後でダウンロードして実行しdpkg -i myapplication.debます。アップグレードのインストール中はサービスを停止する必要がありますが、cgroup 内のすべてのプロセスが終了するまでサービスは停止しません。dpkgがこの cgroup で実行されているため、デッドロックが発生しています。サービス停止タイムアウトの後、強制終了dpkgされ、アップグレードはインストールされません。

0 投票する
2 に答える
1062 参照

shutdown - Systemd - `ExecStop=` 中にユーティリティ Docker コンテナを実行する

私は CoreOS が私たちのニーズを満たしているかどうかをテストしています。私はsystemdが好きですが、正しく動作していないようです-具体的には、シャットダウン時です。

私の目標

私の目標は、サービスの開始時と停止時にスクリプトを実行して、サービスの DNS サーバーからそれぞれレコードを追加および削除することです。起動時にシステムによってサービスが開始されたとき、または手動で開始またはシャットダウンされたときに機能しますが、システムが再起動または停止されたときは機能しません ( shutdown -r nowshutdown -h now)。

これは、私が例として使用している docker レジストリ サービスの少し簡略化されたバージョンです。

(このユニットは、別のユニットregistry-ui.serviceと連携して動作します。一方が開始されると、もう一方も同様に動作します。)

行に注意してくださいConflicts=...。サービスが適切にシャットダウンされなかった理由を突き止めようと時間を費やした後、追加しました。何もしませんでした。ただし、ドキュメントによると、サービスにはConflicts=shutdown.targetデフォルトで行があります。サービスが競合し、一方が起動すると、もう一方がシャットダウンします-またはドキュメントによると。

私は何を取りこぼしたか?ExecStop=ラインが実行されないのはなぜですか?


アップデート

私は、ExecStop=ラインが実行されることを確認しました。を使用するjournalctl -u registry.service -n 200と、次のメッセージが表示されました。

これは、(コメントで推測したように) シャットダウン中に Docker コンテナーが起動しないことが問題であることを示しています。[Unit]セクションに次の行を追加しました。

新しい行はjournalctlエラーに影響を与えないので、私の質問は、シャットダウンする前にユーティリティdockerコンテナを実行する方法はありますか?

0 投票する
0 に答える
1842 参照

service - systemd 起動スクリプトが実行されないのはなぜですか?

Debian テスト マシンの起動時に簡単なスクリプトを実行しようとしています。いくつかのガイドに従いましたが、サービスが開始されません。誰かが私が間違っていることを教えてもらえますか? インターネットでsystemdについて泣き言を言う前に、systemdについて理解したいと思います。

私は/etc/systemd/system/startup-scripts.service(時々ここに、時には/lib/systemd/system/my-file.serviceへのシンボリックリンクとして)作成し、書きました

それから走った

また、/usr/bin/startup-script.sh をファイルし、実行可能にして実行しました。スクリプトが実行されると判断した限りでは、再起動は無駄でした。

答えにはjournalctlが関係していると思います。ここで何を見ているのかよくわかりません。マルチユーザーが間違ったターゲットであったとしても、私は驚かないでしょう。それは最も合理的に見えるものでしたが、私はそれが何のためにあるのか本当に自信がありません.

0 投票する
1 に答える
724 参照

linux - systemd スクリプトからの ts_ calibration の実行に失敗する

起動時にsystemdによって実行されるスクリプトがあります。ユーザーがアプリケーションを終了すると、スクリプトは ts_ calibration を実行し、それが完了すると、アプリケーションを再度実行します。オングストロームでは正常に動作しましたが、Debian を実行している Beaglebone Black では動作しませんでした。

私のmita.shスクリプト

システムが起動すると、アプリは正常に起動しますが、アプリを終了すると ts_ calibration の実行に失敗します。次のエラーが表示されます:-

ts_open: そのようなファイルまたはディレクトリはありません

root としてログインすると、コマンド ラインからスクリプトを実行でき、すべてが期待どおりに機能します。
コマンドラインから入力するsudo ts_calibrateと、同じエラーが発生します。
誰かがここで何が起こっているのかを理解するのを手伝ってくれますか?
root として ssh を実行するとスクリプトを正常に実行できますが、sudo を実行すると、ts_ calibration を実行する権限がないようです! systemd も正しい権限を持っていないようです!

よろしく、
ジェームズ。

.
.
.
systemd サービス

.
uname -a
Linux beaglebone 3.8.13-bone67 #1 SMP Wed Sep 24 21:30:03 UTC 2014 armv7l GNU/Linux

0 投票する
2 に答える
2973 参照

digital-ocean - CoreOS クラウド構成でコマンドを実行します (例: スワップを追加する)

cloud-config標準ファイルとは異なり、runcmdCoreOScloud-configファイルにはオプションがありません。現在、次を my に追加して、CoreOS マシンでスワップを有効にしていますcloud-config

次に、CoreOS イメージを初期化した後、マシンに ssh して実行する必要があります。

スワップが有効になる前 (例: で証明top)。

ファイル自体で後者のコマンドを実行できるはずですが、フィールドcloud-configなしでそのようなコマンドを実行する方法がわかりません。おそらくこれは、ユニットを編集するか、別のユニットを追加することで実行できますが、その方法はよくわかりません. runmcdcloud-configswap.serviceunit

したがって、2 つの質問が残ります。(1) これは可能ですか、それとも最後のコマンドを手動で実行する必要があるのでしょうか。(2) 前者の場合、どのように?

0 投票する
1 に答える
2351 参照

java - Java の sd_notify()

systemdのユーザー インスタンスから起動する Java サービス ( Dropwizardを使用して実装) があります。ここまでは順調ですね。ここで、systemd の通知機能を使用してサービスの状態を認識させたいと思います( C ライブラリ関数またはシェル スクリプトとして利用できますが、最終的には両方のメソッドが環境変数によって参照されるソケットと通信します)。サービスの起動が完了したら任意のコードを実行できますが、Java 内から systemd に通知する最善の方法がわかりません。

他の開発者はこのサービスを Windows で実行しているため、通知コードが目立たず、systemd で実行していない場合に出力が発生しない場合は、ボーナス ポイントとして非常に役立ちます。