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

systemdは、LinuxのSystemVおよびUpstart initデーモンの代替アプローチです。これは、サービスの依存関係を表現するためのより良いフレームワークを提供し、システム起動時により多くの作業を並行して実行できるようにし、シェルのオーバーヘッドを減らすことを目的としています。

2
systemctlステータスサービスから完全なログを表示するにはどうすればよいですか?
でサービスステータスを確認しますsystemctl status service-name。 デフォルトでは、いくつかの行しか表示されないため、-n50さらに表示するために追加します。 時々、最初から完全なログを表示したいことがあります。何千行もある可能性があります。 今、私はそれをチェックしますが-n10000、それはきちんとした解決策のようには見えません。 lessコマンドに似た完全なsystemdサービスログをチェックするオプションはありますか?
347 logs  systemd 

1
systemdの起動スクリプトを書く方法
ラップトップに2枚のグラフィックカードがあります。1つはIGPで、もう1つは個別です。 個別のグラフィックカードをオフにするシェルスクリプトを作成しました。 起動時に実行するためにsystemdスクリプトに変換するにはどうすればよいですか?

10
journalctlをクリアする方法
Googleでシステム化されたジャーナルをクリアする安全な方法を見つけることができませんでした。誰でも安全で信頼できる方法を知っていますか? 私が何かを試していて、ログがさまざまなエラーメッセージで乱雑になったとしましょう。さらに、Conkyを使用してデスクトップにジャーナルを表示しています。これらのエラーは、私がこの問題を修正していたひどい日を思い出させるので、本当に見たくありません。この恐怖の後、新鮮な男のように感じたいです。これはログをクリアする正当な理由であることに誰もが同意すると思います:P

6
Upstartとsystemdの長所と短所は何ですか?
表示されますsystemdにはホットな新でINITと同じ、ブロック上のシステム成り上がりは数年前でした。それぞれの長所と短所は何ですか?また、それぞれが他の初期化システムとどのように比較されますか?
183 init  upstart  systemd 

2
systemdサービスの標準出力/標準エラーを表示する
カスタムアプリケーション用の単純なsystemdサービスファイルを作成しました。手動で実行するとアプリケーションは正常に動作しますが、systemdで実行するとCPUが最大になります。 私は私の問題がどこにあるかを追跡しようとしていますが、どこに出力があるのか​​わかりません(またはsystemdが出力をどこかに配置するように設定する方法)。 これが私のサービスファイルです。 [Unit] Description=Syncs files with a server when they change Wants=network.target After=network.target [Service] ExecStart=/usr/local/bin/filesync-client --port 2500 WorkingDirectory=/usr/local/lib/node_modules/filesync-client Restart=always [Install] WantedBy=multi-user.target アプリケーション全体で、stdoutとstderrに出力します。 デーモンの出力を読み取るにはどうすればよいですか? 編集: を見つけましたがman systemd.exec、StandardOutput=オプションについて言及しましたが、どのように使用するのかわかりません。manページから: StandardOutput= 実行されたプロセスのファイル記述子1(STDOUT)の接続先を制御します。inherit、null、tty、syslog、kmsg、kmsg + console、syslog + consoleまたはsocketのいずれかを取ります。 標準入力のファイル記述子を継承するように設定されている場合、標準出力用に複製されます。nullに設定すると、標準出力はに接続されます/dev/null。つまり、書き込まれたものはすべて失われます。ttyに設定されている場合、標準出力はttyに接続されます(を介して設定されたTTYPath=とおり、以下を参照)。TTYが出力に使用される場合、実行されたプロセスのみが端末の制御プロセスにならず、失敗したり、他のプロセスが端末を解放するのを待ったりしません。 syslogは標準出力をsyslog(3)システムロガーに接続します。 kmsgは、dmesg(1)を介してアクセス可能なカーネルログバッファに接続します。 syslog + consoleおよびkmsg + console同様に機能しますが、出力をシステムコンソールにもコピーします。 socketは、ソケットのアクティブ化から標準出力をソケットに接続します。セマンティクスはのそれぞれのオプションに似ていますStandardInput=。この設定はデフォルトで継承されます。 これは、これらが私の唯一のオプションであることを意味しますか?たとえば、出力を/dev/shm何かに入れたいです。Unixドメインソケットを使用して簡単なリスナーを作成できると思いますが、これは少し不要なようです。 デバッグに必要なのはこれだけで、おそらくほとんどのログを削除して、出力をsyslogに変更することになります。

1
systemdサービスを開始する前にchdirを実行する
質問:systemdでプロセスを開始し、そのプロセスに選択した作業ディレクトリを割り当てることはできますか? 開始したいサービスがありますsystemd。そのサービスが開始されると、現在の作業ディレクトリを割り当てることができます。私が使用していた場合、これを行う方法を知っていますinitが、私は問題を抱えていsystemdます。 これが私が仕事をしようとしてきたことです。 私のサービス Pythonで記述された単純なユーティリティ( "listdir")を作成し、次の場所に配置しました/opt/bin/listdir。 #! /usr/bin/python import os print 'Current working directory: %s' % (os.getcwd()) 構成ファイル 次に、listdir.serviceファイルを作成して、systemdここに配置しました/lib/systemd/system/listdir.service。 [Unit] Description=Test of listing CWD. [Service] ExecStartPre=chdir /usr/local ExecStart=/opt/bin/listdir StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target 問題 systemctl start listdirシステムログを実行すると、ルートディレクトリ( "/")が現在の作業ディレクトリとして記録されます。もちろん、プロセスを開始する前にディレクトリを変更する/usr/localと思ったので、現在のディレクトリとして期待していましたExecStartPre。 明らかに、それsystemdがシェルスクリプトのようなもので動作することを想像しています(シェルスクリプトではないことはわかっていますが)。誰かが私にすべきことを教えてもらえますか?を使用して作業ディレクトリを設定することも可能systemdですか?ありがとう! 編集:私のシステムログはエラーを報告しています。(さっき気付いた。) Executable path is not absolute, ignoring: chdir /usr/local ですから、chdirシェルコマンドであり、実行可能ファイルそのものではありません。はい。しかし、まだディレクトリを変更する方法はありsystemdますか?
148 systemd 

2
systemdは/etc/init.dスクリプトをどのように使用しますか?
私はちょうどdebian jessieに切り替えましたが、グラフィカルディスプレイマネージャーを含め、ほとんどのものは問題なく動作しますwdm。 事は、私はこれがどのように機能するか理解していないだけです。/etc/init.d/wdmスクリプトを呼び出すのは明らかです。なぜなら、私exitがそこに早く入れたとき、wdmが開始されないからです。しかし、代わりに/etc/rc3.dディレクトリーの名前を変更すると(私のデフォルトのランレベルは3でした)、wdmはまだ開始されています。 systemdがこのスクリプトを見つける方法を見つけることができず、他のすべてのinit.dスクリプトに対して何が行われるのか理解できません。 systemdはいつ、どのようにinit.d scripsを実行しますか? 長期的には、すべてのinit.dスクリプトを削除する必要がありますか?

3
基本的なsystemdサービスファイルの作成
ユーザーがlocalhostでHTTPを介して対話するNodejsアプリケーションを開発しています。実質的にパラメーターはなく、デーモンには実質的に依存関係がなく、ログイン時間までに起動する必要があります。 起動スクリプトについては、各プラットフォームのイディオムに従います。これは、UbuntuのUpstartとFedoraのsystemdを意味します。 systemdシステムファイルを作成するための良いチュートリアルはありますか? 知っておくべき「ベストプラクティス」はありますか? 私はこれらのリソースを見つけました: systemdに関するFedora wikiページ systemdシステムファイルの作成に関するブログ ウィキペディアのSystemd 私は主に、参照としての種類のAPIと、従うべき基本的な形式を探しています。
103 services  systemd 

7
ネットワークの開始後にスクリプトを実行しますか?
私はsystemdが比較的新しく、そのアーキテクチャを学んでいます。 現在、カスタムシェルスクリプトを実行する方法を見つけようとしています。このスクリプトは、ネットワーク層の起動後に実行する必要があります。 systemdとnetctlを使用してArchを実行しています。 テストするために、単に実行する単純なスクリプトを作成しましたip addr list > /tmp/ip.txt。このスクリプト用に次のサービスファイルを作成しました。 (/etc/systemd/system/test.service) [Unit] Description=test service [Service] ExecStart=/root/test.script [Install] WantedBy=multi-user.target 次に、スクリプトを有効にしました。 systemctl enable test 再起動すると、スクリプトは実際に実行されますが、ネットワークが開始される前に実行されます。つまり、出力にip.txtは、プライマリインターフェイスに割り当てられたIPv4アドレスは表示されません。ログインするまでに、IPv4アドレスは実際に割り当てられており、ネットワークは稼働しています。 WantedByパラメーターを変更することで、スクリプトを実行するポイントを変更できると思いますが、その方法はわかりません。 誰かが私を正しい方向に向けることができますか?

7
サービスがスクリプトで実行されているかどうかをテストする「適切な」方法
私の問題: 私はbashスクリプトを書いていますが、その中で特定のサービスが実行されているかどうかを確認したいと思います。 私はこれを手動で行う方法を知っています$ service [service_name] status。 しかし、(特にsystemdへの移行以来)解析するのが少し面倒なテキスト全体を印刷します。単純な出力または確認できる戻り値を持つスクリプト用に作成されたコマンドがあると想定しました。 しかし、グーグルで動き回っても「ああ、ただps aux | grep -v grep | grep [service_name]」という結果しか得られません。それはベストプラクティスとは言えませんね。そのコマンドの別のインスタンスが実行されていて、SysV initスクリプトによって開始されたものではない場合はどうなりますか? それとも、黙って小さなpgrepで手を汚すべきですか?

4
使用可能なネットワークインターフェイスを見つけるにはどうすればよいですか?
これはlinuxに関するものですが、一般的な* nixメソッドを知っている人がいればそれでいいでしょう。 昨日、イーサネットケーブルを接続した状態でシステムを起動しました。「NetworkManager」がインストールされていないので、起動したらifconfigDHCP インターフェースを手動で起動するためにイーサネットインターフェースの名前を探しに行きましたが、lo。 NICはを介してリストされlspci、適切なカーネルドライバーがロードされました。システムは通常wifiを使用し、そのためのインターフェイス名はでしたwlan0。試したところifconfig wlan0 up、wlan0登場しました。しかし、私が覚えていた唯一のイーサネットインターフェース名はでeth[N]あり、em[N]どちらも機能しませんでした。 このドキュメントでは、「予測可能なインターフェイス名」について言及していますが、それらが何であるかを簡単な用語で説明することはできません。これは、この場合の名前がPCIバスとスロット番号から推測されることを意味するソースコードを指します。これは、不必要に複雑な面倒のようです。 他の検索では、これはとsystemd組み合わせて決定される可能性があると信じさせられましudevたが、ほぼ100個のファイルが/usr/lib/udev/rules.dあり、1時間かけてsystemd構成ファイルがあるかどうかを判断しようとしています(これはばかげているようです)。 また、彼らが指名されるかもしれないどれだけ、彼らが利用可能であることを確実に知ることはいいだろうならば、彼らはあるので、私は、ハードウェアの問題を除外することができ、などが利用可能なネットワークインタフェースの名前を見つけるための簡単な方法ではありませんLinuxでは?

2
CentOS 7で以前のブートからのログメッセージを表示するにはどうすればよいですか?
journalctlCentOS 7システムで実行すると、最後のブート後に生成されたメッセージのみが出力されます。 コマンド # journalctl --boot=-1 プリント Failed to look up boot -1: Cannot assign requested address ステータス1で終了します。 それを現在のFedoraシステムと比較すると、CentOS 7にはない/var/log/journal(そしてjournalctl提供しない--list-boots)ことがわかります。 したがって、私の最後のブート日より前に書き込まれたログメッセージを表示する方法について質問します。 または、おそらくこの機能をCentOS 7で有効にする必要がありますか? (journalctlマニュアルページには、バージョン番号として「systemd 208」が記載されています。)

2
大量のネットワークとCPUリソースを消費する奇妙なランダムな名前のプロセス。誰かが私をハッキングしていますか?
クラウドプロバイダー上のVMで、奇妙なランダムな名前のプロセスが表示されています。ネットワークとCPUリソースを大量に消費します。 pstreeビューから見たプロセスは次のとおりです。 systemd(1)───eyshcjdmzg(37775)─┬─{eyshcjdmzg}(37782) ├─{eyshcjdmzg}(37783) └─{eyshcjdmzg}(37784) を使用してプロセスにアタッチしましたstrace -p PID。ここで私が持っている出力です:https://gist.github.com/gmile/eb34d262012afeea82af1c21713b1be9。 プロセスを強制終了しても機能しません。どういうわけか(systemd経由?)復活しています。systemdの観点から見ると次のようになります(下部にある奇妙なIPアドレスに注意してください)。 $ systemctl status 37775 ● session-60.scope - Session 60 of user root Loaded: loaded Transient: yes Drop-In: /run/systemd/system/session-60.scope.d └─50-After-systemd-logind\x2eservice.conf, 50-After-systemd-user-sessions\x2eservice.conf, 50-Description.conf, 50-SendSIGHUP.conf, 50-Slice.conf, 50-TasksMax.conf Active: active (abandoned) since Tue 2018-03-06 10:42:51 EET; 1 day 1h ago Tasks: 14 Memory: 155.4M CPU: …


1
最近の企業コンピューターでの起動中のクラッシュ
最近の更新の後、コンピューターが起動しなくなりました!ここに私が決定できるものがあります: これは、企業ITから提供されたごく最近のコンピューターです。最新のIntel CPU(Skylake世代)が搭載されています。 コンピューターはUbuntu 16.04を実行します。 コンピューターは3月に最後に正しく起動しました。この問題は、おそらくソフトウェアの更新またはハードウェアのバグが原因です。 16.04を実行している別のコンピューターで、ほとんど同じソフトウェアがインストールされています(使用しましたapt-clone)が、正常に動作します。異なるハードウェア(amd64ですが、異なるCPU、異なるGPUなど)があります。 カーネルは起動し、initrdは正しく動作します。グラフィックモードでスプラッシュスクリーンで起動すると、dm-cryptボリュームのパスワードの入力を求められますが、最後に表示されるのは、正常にマウントされたことです。 ログインプロンプトが表示される前にハングします。コンピューターがハングすると、ハードハングになります。Alt+ でもSysRq応答しません。ファンが完全にオンになるので、CPUは明らかに100%に固定されています。 再起動する前に実行していたカーネルがまだあります。Grubメニューでこのカーネルを選択すると、同じロックアップが得られます。したがって、これは既存のカーネルバグであり、他の何かによってトリガーされるように見えますが、それは何ですか? スプラッシュスクリーンをオフにすると(Grub splashのlinuxコマンドラインから削除)、多数のサービスが開始され、ロックされます。 Grubのコマンドラインに追加init=/bin/shすることで、ルートシェルを取得できますlinux。さらに追加することでさらに取得できます systemd.unit=basic.target systemd.shell これにより、多数のサービスが開始され、tty9でルートシェルが実行されます。 systemctl start multi-user.targetそのルートシェルから実行すると、コンピューターがロックします。したがって、これらのサービスのいずれかによって問題が引き起こされていると考えられます。 systemctl list-dependencies multi-user.targetどのサービスが開始されるかを確認するために走りました。リストされた依存関係を1つずつ手動で開始し、すべてが正常に開始されました。 そのため、これはハードウェアのバグのように見えます(1台のコンピューターでは発生しますが、他のコンピューターでは発生しないため)。一部のソフトウェアによってトリガーされます。しかし、どのソフトウェアですか?コンピューターが非常に激しくロックするため、ログを取得できません。有用なコンソール出力も取得できません。 便利なデバッグ手法: Alt+ SysRq:マジックSysRqキー。緊急リブートなどを実行できます。非常に低いレベルでカーネルにアクセスするため、最悪のクラッシュ以外のすべてで機能します。私の場合、Alt+ SysRqは応答しません。これは、クラッシュの深さを示しています。 ブートパラメータを変更するにはShift、電源を入れた後、数秒間押し続けます。BIOSがキーボードを初期化した後、オペレーティングシステムが起動する前に押す必要があります。これにより、Grubメニューが表示されます。 Grubメニューで、を押しeてメニューエントリのコマンドラインを編集します。Linuxブートパラメーターを変更するには、で始まる行に移動しますlinux。最新のUbuntuでは、「Ubuntuの詳細オプション」の下に古いカーネルがあります。コマンドラインに必要な変更を加えたら、Ctrl+ xを押して起動します。ここで行った変更は、このブート専用であり、ディスクには保存されません。 linuxコマンドラインのいくつかの便利なオプション: quiet nosplashほとんどすべてのブートメッセージを非表示にします。それらを削除して、ブート中にコンソールにメッセージを取得します。これは、問題を診断する機会を得るために必要です。 recoveryサービスがほとんどないルートシェルを提供します。ルートパスワードを知る必要があります。「リカバリモード」メニューエントリはこれを使用します。 init=/bin/shサービスのないルートシェルを提供します。通常の起動を再開するには、を実行しexec initます。この時点で、systemdオプションを渡すことができます。たとえばexec init --unit=basic.target、initおよびいくつかのサービスを開始します(これはログインする方法を開始しないため、別のコンソールでシェルを実行することをお勧めします)。ルートファイルシステムは読み取り専用でマウントされていることに注意してください。mount -o remount,rw /それに書き込むことができるように実行します。 systemd.unit=basic.target非常に基本的なサービスセットを開始します。これにはログインする方法が含まれていないことに注意してください!これをデフォルトにするにsystemctl set-default basic.targetは、ルートプロンプトで実行します。元のデフォルトのターゲットを復元するには、実行しますsystemctl set-default graphical.target(またはsystemctl set-default multi-user.targetGUIのない​​サーバーの場合)。 systemd.debug-shelltty9でルートシェルを開始します。systemctl …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.