タグ付けされた質問 「daemon」

対話型ユーザーの直接制御下にあるのではなく、バックグラウンドプロセスとして実行されるコンピュータープログラム。


3
デーモンのOOMキラー調整を永続的に設定する方法は?
単一または少数の重要なシステムサービスデーモンを使用していくつかのLinuxサーバーを実行している場合、何らかの異常が発生した場合に備えて、デーモン化されたプロセスのOOMキラーを調整したいと思います。たとえば、多くのapt-checkerプロセスがすべてのメモリを消費し、カーネルがMySQLを強制終了することをお勧めしているため、今日、MySQLを実行しているUbuntuサーバーが強制終了されたMySQLデーモンを取得しました。 /proc/$(pidof mysqld)/oom_score_adjファイルを使用してスコアを調整して、MySQLを削除することを好まない手がかりをカーネルに与えることができることは知っていますが、それでもサービスの再起動には耐えられません。これらの調整を含めるために、パッケージからinit / upstartスクリプトを編集する必要がありますか?パッケージに属するファイルを調整するので、これは非常にエレガントなソリューションではないと思います。一般にupstart / initスクリプトにフックし、条件付きで調整することは可能でしょうか?または、次のような無期限のスクリプトを実行することをお勧めしwhile true{ adjust_oom(); sleep 60;}ますか?

3
ポートがメッセージを受信したときに実行するスクリプトを設定する方法
シェルスクリプトを特定のポートでリッスンする方法を知りたいです(おそらくnetcatを使用していますか?)。うまくいけば、メッセージがそのポートに送信されると、スクリプトがメッセージを記録してから関数を実行します。 例: コンピューター1はスクリプトをバックグラウンドで実行し、スクリプトはポート1234を着信トラフィックに開きました コンピューター2はメッセージ「hello world」をコンピューター1のポート1234に送信します コンピューター1のスクリプトは、メッセージ "hello world"を変数$ MESSAGEに記録します 変数$ MESSAGEが設定されたため、スクリプトは関数を実行します これを寄付するにはどうすればよいですか?

1
「su -c <command>&」がハングアップせずにコマンドをバックグラウンドで実行できるように見えるのはなぜですか
私は、バックグラウンドプロセスで断続的に死ぬ問題を抱えていた同僚を助けていました。 サーバーにログインして実行することでバックグラウンドプロセスを開始していることがわかりました。 su - &lt;user&gt; -c '&lt;command&gt;' &amp; 「あは」と叫びました。「コマンドを「&」で開始すると、制御端末を終了するときにハングアップします。これを行うには、nohupなどを使用する必要があります。このプロセスは、デーモンとしての実行をサポートする必要があります。」 上記のコマンドをテストして私のポイントを実証しましたが...動作しているようです:上記のコマンドを実行したターミナルを終了したときに、コマンドによって開始されたプロセスが終了しませんでした。 コマンドは、出力がファイルに送られるカスタムPythonスクリプトです。私の知る限り、スクリプトにはインテリジェントな「デーモン化」のような機能はありません。Wikipedia:Daemon(computing):Creationページにリストされているデーモンとして実行するために必要なことは何もしません。 このようにコマンドを実行すると、期待どおりに動作します。 &lt;command&gt; &amp; exit 上記の場合、ターミナルを終了すると、コマンドによって開始されたバックグラウンドプロセスが終了します。 私の質問はこれです: 端末が終了したときにプロセスが終了しないようにする「su--c&」を追加するとどうなりますか。制御端子、標準入出力などについて詳しく知りたい これは、このコマンドをバックグラウンドプロセスとして実行するという目標を達成するための合理的な方法ですか?そうでない場合、そうではありませんか? 私は社内でベストプラクティスを広めたいと思っていますが、私が行った推奨事項を実証およびバックアップできる必要があります。 何が起こっているのかも正確に理解したい。

3
ユーザーごとのデーモンのようなものはありますか?
特定のユーザーでログインしている限り、いくつかのバックグラウンドプロセスを実行する必要があります。 ユーザーごとのデーモンのようなものはありますか?私は、コンピューターの起動からシャットダウン(または手動の起動/終了)まで存続するグローバルデーモンのみを知っています。 ここでは、プロセスが既に存在するかどうかを確認し、存在しない場合は作成するスクリプトを作成しました。次に、このスクリプトはnohupmyからのコマンドで実行されます.profile。このようにして、プロセスは起動時に起動し、一度だけ起動されます(複数のrxvt用語が出入りしても)。ただし、ログに記録した後は決して強制終了されません(これは災害ではありませんが、プロセスを終了する方がクリーンです)。

5
udevとhaldの違いは何ですか?
私はLinuxの内部に飛び込み始めたばかりで、udevとhalデーモンの違いは何なのかと思っていました。私が収集したものから、両方ともホットプラグ可能なデバイスの管理を担当しているようです... udevがリッスンするために使用しているのでしょうか、それとも2つは別のものですか?
11 udev  daemon 

1
systemdでJavaデーモンを構成する
私はこの定義をsystemd仕事に使用しています: [Unit] Description=Some job [Service] ExecStart=/usr/local/sbin/somejob User=dlt Type=forking [Install] WantedBy=multi-user.target スクリプトは次のように呼び出されます(tcpipソケットをリッスンし、入力をファイルに追加する単純なルーチンを呼び出します)。 #!/bin/sh cd /home/user/tmp/testout nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar &lt;/dev/null &gt;/dev/null &amp; systemctl start somejobプロセスがinit親として、実行中と表示された後: user@CANTANDO ~$ ps -u dlt eo pid,ppid,command PID PPID COMMAND 8718 1 java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar systemctl stop somejobプロセスの実行後、表示されなくなります(ポートが閉じられます)。 だからすべてが元気でダンディに見える 私の質問は次のとおりです。これは、Javaデーモンをで実行するための許容できる解決策ですかsystemd、それとも警告、つまりこれを達成するためのより安定した安全な方法ですか?
11 systemd  java  daemon 

1
カーネルスレッドはプロセスとデーモンですか?
MauererのLinuxカーネルアーキテクチャから、 カーネルスレッドは、カーネル自体によって直接開始されるプロセスです。カーネル機能を別のプロセスに委任し、そこでシステムの他のプロセスと「並列」で(そして実際には、カーネル自体の実行と並列に)実行します。カーネルスレッドは、しばしば(カーネル)デーモンと呼ばれます。たとえば、以下のタスクを実行するために使用されます。 変更されたメモリページを、ページの作成元のブロックデバイス(たとえば、mmapを使用してマップされたファイル)と定期的に同期します。 めったに使用されないメモリページをスワップ領域に書き込むため。 遅延アクションを管理するため。 ファイルシステムのトランザクションジャーナルを実装します。 基本的に、カーネルスレッドには2つのタイプがあります。 タイプ1 —スレッドは開始され、特定のアクションを実行するようカーネルから要求されるまで待機します。 タイプ2 —開始されると、スレッドは定期的な間隔で実行され、特定のリソースの使用率をチェックし、使用率が設定された制限値を超えるか下回ったときにアクションを実行します。カーネルは、このタイプのスレッドを継続的な監視タスクに使用します。 Mauererの本には、カーネルスレッドはプロセスであると記載されているため、カーネルモードではなく、ユーザーモードで実行する必要があると思います。(または私は間違っていますか?プロセスは、ユーザーモードまたはカーネルモードのいずれかで異なる時間に実行できますか、それとも1つのモードだけで実行できますか?) しかし、BovetのLinuxカーネルの理解によると、カーネルスレッドはカーネルモードでのみ実行されます(下の引用を参照)。2冊の「カーネルスレッド」の概念は同じ概念ですか? 従来のUnixシステムは、ディスクキャッシュのフラッシュ、未使用のページの交換、ネットワーク接続のサービスなど、いくつかの重要なタスクを断続的に実行するプロセスに委任しています。実際、これらのタスクを厳密に直線的に実行することは効率的ではありません。それらの機能とエンドユーザープロセスの両方がバックグラウンドでスケジュールされていると、応答が向上します。一部のシステムプロセスはカーネルモードでのみ実行されるため、最近のオペレーティングシステムは、不要なユーザーモードコンテキストに邪魔されないカーネルスレッドに機能を委任します。Linuxでは、カーネルスレッドは次の点で通常のプロセスと異なります。 カーネルスレッドはカーネルモードでのみ実行されますが、通常のプロセスはカーネルモードとユーザーモードで交互に実行されます。 カーネルスレッドはカーネルモードでのみ実行されるため、PAGE_OFFSETより大きい線形アドレスのみを使用します。一方、通常のプロセスは、ユーザーモードまたはカーネルモードのいずれかで、4ギガバイトのリニアアドレスをすべて使用します。 Mauererの本は、カーネルスレッドはカーネルによって直接開始されると述べており、デーモンはカーネルスレッドの同義語であるとも言われているようです。したがって、デーモンはカーネルによって直接開始される必要があると思います。 しかし、https://unix.stackexchange.com/a/193918/674によると、screenデーモンはscreenユーザーインターフェイスによって起動されます(下の引用を参照)。screenユーザーインターフェースはカーネルではなくプロセスだと思います。概念であるdaemonMauererの本の中で、リンクされた回答では、同じ概念? を最初に起動するとscreen、実際にはユーザーインターフェイス(ui)が開始されます。これにより、デフォルトでデーモン(セッションマネージャー)が作成されます。 一般的に、「カーネルスレッド」、「プロセス」、および「デーモン」の概念、それらの関係および違いをどのように理解しますか?

1
ネットワークデーモンを再起動できません
と入力するとsudo service networking restart、次のようなエラーが発生します。 edward@computer:~$ sudo service networking restart stop: Job failed while stopping start: Job is already running: networking networkingMacアドレスを変更した後、および/etc/network/interfacesファイルに静的IPを設定した後に再起動したいときに、このエラーが発生しました。 これらの変更を元に戻した後でも、コンピューターが正常に動作しているときにも、同じエラーが発生します。 調べている/var/log/syslogと私はこれを見つけました: kernel: [ 6448.036144] init: networking post-stop process (28701) terminated with status 100 それは失敗した停止/開始に関連していますか? 私はUbuntu 14.04を使用しています

4
atdが過去のジョブを実行しないようにする方法は?
atデーモンは素晴らしいツールです!ただし、ジョブが午前8時にスケジュールされていて、マシンがその時点でオフになっている場合は、マシンが起動されるたびにatがジョブを実行します。私がやりたいのは、時間が過ぎたらジョブを実行しないようにすることです。オンラインでマニュアルページを検索しましたが、回答がないか、回答が見つかりませんでした。私はArchを使用していますが、私の知る限りでは、ディストリビューション全体で非常によく似ています。 どんな助けでも大歓迎です!
9 time  scheduling  daemon  at 

2
シェルでプロセスをデーモン化しますか?
http://linuxg.net/how-to-transform-a-process-into-a-daemon-in-linux-unix/は、bashでプロセスをデーモン化する例を示しています。 $ nohup firefox&amp; &amp;&gt; /dev/null 私が正しい場合、コマンドは「nohup and background a process」と同じです。しかし、デーモンはnohuppedおよびバックグラウンドプロセス以上のものではありませんか? プロセスをデーモン化するためにここで欠落している手順は何ですか? たとえば、プロセスをデーモン化するときに親プロセスを変更する必要はありませんか?はいの場合、どのようにbashでそれを行いますか?関連する返信https://unix.stackexchange.com/a/177361/674を理解しようとしています。 他にどのようなステップと条件がありますか? 私の関連する質問を参照してくださいhttps://stackoverflow.com/q/35705451/156458
9 linux  bash  daemon 

1
MiniSSDPDを停止しました。何か問題が発生しますか?
デフォルトでリスニングしている20ほどの不要なサービスを停止して無効にすることで、Debianシステムを強化しようとしています。それらの1つは「minissdpd」と呼ばれます。どうやら、これはプラグアンドプレイデバイスに「発見」サービスを提供しているようです。ローカルの周辺機器を支援することを目的とした何かが、世界の反対側にいる中国のハッカーに耳を傾ける必要があるように私には一種の狂気のようです。発見サービスとはどういう意味ですか? 脆弱性データベースを調べたところ、十分な数のminissdpdに多数の脆弱性がリストされていました。デフォルトのディストリビューションでこれを有効にするにはどうすればよいですか?真剣に、それはDebianをインストールするようなもので、ハッキングされます。 とにかく、私の主な質問は次のとおりです。このサービスを無効にしたので、何か問題が発生するでしょうか(何かを差し込むと機能しません)。

2
FreeBSD rcスクリプトを作成する簡単な方法はありますか?
次のコマンドを使用してサーバーを実行するFreeBSDの刑務所があります。 /usr/sbin/daemon /path/to/script.py 現時点では、マシンを再起動して刑務所が起動するたびにこのコマンドを実行する必要があります。このコマンドをから開始したいの/etc/rcですが。daemonコマンド用のFreeBSD rcスクリプトを作成する簡単な方法はありますか? 更新:私はrcスクリプトに関するこのBSDドキュメントを読み、そこから次のスクリプトを作成しました/etc/rc.d/pytivo: #!/bin/sh . /etc/rc.subr name=pytivo rcvar=pytivo_enable procname="/usr/local/pytivo/pyTivo.py" command="/usr/sbin/daemon -u jnet $procname" load_rc_config $name run_rc_command "$1" これは、刑務所が起動したときにデーモンとして必要なpythonスクリプトを開始するように機能します...(指定さpytivo_enable="YES"れて/etc/rc.confいる場合)起動しようとすると警告が表示されます。 [root@meryl /home/jnet]# /etc/rc.d/pytivo start [: /usr/sbin/daemon: unexpected operator Starting pytivo. [root@meryl /home/jnet]# ですから、近づいてきて動作しますが、これよりも優れた機能を手に入れることができるはずです。

3
背景、ゾンビ、デーモン、cttyなし-これらの概念は関連していますか?
-どのようにこれらのプロセスの概念は一緒に関連してbackground、zombie、daemonとwithout controlling terminal? 特にのコンセプトではcontrolling terminal、彼らはどこか近づいているように感じますが、Linuxについての記事を読む子供に嘘をつくことなく説明する必要がある場合など、ストーリーを伝えるための情報はまだあまりありません。 更新#1:たとえば(それが本当かどうかはわかりません) background-- 親なしで残されたバックグラウンドプロセスであるため、zombieフォアグラウンドプロセスはになれませんzombiezombie daemon-- without cttyすべてdaemonsがなしcttyで実行されますが、すべてのプロセスcttyがdaemons background- daemon- background process再び対話的に実行するために取得することができ、daemon is not zombie- without ctty- zombieがある場合に無関心であるcttyそれに接続されているかどうか background- without ctty- processes彼らが持っている一方で、バックグラウンドに送られctty、そして場合はデーモンやダイなっcttyそれらから取られます

3
systemdが「ループが速すぎる」と出力するのはなぜですか?
Debian 8.3(jessie)でサーバー(VPS)を実行していて、systemdがさまざまなプロセスを管理しています。システムの負荷は1未満ですが、ほぼすべてのメモリとスワップ領域の一部を使用しています。サービスを停止して開始しようとすると systemctl stop process@1 ログファイルは言う Mar 1 08:03:50 abcde systemd[1]: Looping too fast. Throttling execution a little. このメッセージは毎秒表示され、それ以上は起こりません。^C端末に送信すると、ようやくプロセスが停止します。デーモンを再起動しようとすると、同じことが起こります。Systemdのバージョン:215-17 + deb8u3 このメッセージが表示されるのはなぜですか?このメッセージなしでデーモンをシャットダウンするにはどうすればよいですか?
8 systemd  daemon 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.