systemdなしで起動すると、systemdサービスはCPUを100%使用します。

systemdなしで起動すると、systemdサービスはCPUを100%使用します。

私は最新のアップデートを含むDebian Jessieを使用しています。サーバーの起動時にスクリプトを実行するためのsystemdサービスを作成しました。構成は次のとおりです。

[Unit]
Description=(my description)

[Service]
ExecStart=/usr/bin/bot
Restart=restart-always

[Install]
WantedBy=multi-user.target

/usr/bin/botMono 実行可能ファイルを実行するスクリプトです。これには以下が含まれます。

#!/bin/bash
(cd /path/to/my/executable && mono bot.exe)

(ここでパスを変更しましたが、スクリプトのパスは正しいです。)

/usr/bin/botスクリプトを正常に(私の端末でのみ)実行すると、/usr/bin/bot期待どおりに機能します。topCPUの0〜20%を使用すると報告し、これは正常な現象です。ところで で始めると、service bot start常にtopCPUを100%以上使うと出てきます。

どちらの場合もbot期待どおりに機能します。

CPU使用率のこの大きな違いをどのように説明できますか?

ありがとうございます。

ベストアンサー1

問題はsystemdにありません。

Systemdは標準入力(=/dev/null)なしでプロセスを実行します。すべてのシステムコールはread()すぐに完了します(通常の標準入力を使用し、read()新しいデータが到着するまでブロックされます)。通常、read()完了していないループを呼び出すと、膨大なCPU使用率が発生します。これを確認するには、実行中のプロセスへの接続を試してくださいstrace -p <pid>

プロセスは、標準入力なしで実行するように調整するか、提案されたコマンドなどのいくつかのscreenラッパーを使用する必要があります。nohup

おすすめ記事