最新記事

systemctl daemon-reload 呼び出し時に systemd デバイスを無効にする
systemd
systemctl

systemctl daemon-reload 呼び出し時に systemd デバイスを無効にする

私はsystemdを実行しているいくつかの組み込みシステムをデバッグしています。私が観察した動作は、systemdを実行した後にターゲットが指定されbasic.target無効local-fs.targetになったことです(図を参照)。これにより、多くのシステムデバイスが無効になり、システムを再起動する必要がありました。multi-user.targetsystemctl daemon-reloadsystemctl list-units --type target --all このシステムターゲット変換をデバッグする方法はありますか?有効にしましたが、この特定のシステムを呼び出すとシステムターゲットが変更されるsystemctl log-level debug理由はまだわかりません。systemctl daemon-reload

Admin

rootles systemd/quadletを使用して生成されたファイルはどこに保存されますか?
systemd
mysql
podman

rootles systemd/quadletを使用して生成されたファイルはどこに保存されますか?

遊んでいます。このガイド起動時にコンテナを起動できることを確認してください。これでsystemdサービスを完了して削除し$HOME/.config/containers/systemd/ましたが、サービスによって生成されたファイル(データベースフォルダ/ファイルなど)をクリーンアップしたいと思います。ところで問題は私が知らないということだ。どこファイルが作成されました。どんな助けでも大変感謝します。 mysqld.コンテナ [Unit] Description=MySQL Container After=local-fs.target [Container] Image=docker.io/library/mysql:latest Environment=MYSQL_DATABASE=dat2000 MYSQL_ROOT_PASSWORD=password MYSQL_USER=user MYSQL_PASSWORD=password TZ=Etc/UTC [Install] WantedBy=multi-user.target default.target 使用されたコマンド: systemctl daemon-reload --user systemctl start --user mysqld.service systemctl stop --user mysqld.service systemctl daemon-reload --user

Admin

systemdが定義された「After =」の前にサービスを開始するのはなぜですか?
systemd

systemdが定義された「After =」の前にサービスを開始するのはなぜですか?

だから、本の虫を実行するRaspberry Pi OSライトがあり、ここにPulseAudioをインストールしました。 Piは私のテレビの月明かりのデバイスとして設定されました(EoL SteamLinkを提供してくれたSamsungに感謝します!)。やるべきことは、電源を入れて自動的にMoonlightを実行することだけです。現在はそうしています。これは非常にうまく機能します。 質問... piはLite OSを実行し、MoonlightはX11インターフェイスを独自に実行する必要がないため、Moonlightはデフォルトでそのインターフェイスを見つけるので、Pulse Audioを手動でインストールする必要があります。 デフォルトでは、Pulse Audioはユーザーがログインしたときにのみ起動するように設定されています。そのため、MoonlightはPyのログインを必要とせず、自動的にシステムサービスとして起動されるため、オーディオはまだ準備されておらず、ストリームの開始時に音は出ません。 そこで、ここで説明されている指示に従って、ユーザーに関係なくシステムサービスから始めるためにpulseaudio systemdサービスも作成しました(https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/) 私のPulseオーディオサービスファイル... [Unit] Description=PulseAudio system server After=bluetooth.service [Service] Type=simple PrivateTmp=true ExecStart=/usr/bin/pulseaudio --system --realtime --log-target=journal --disallow-module-loading --disallow-exit Restart=on-failure [Install] WantedBy=default.target このサービスを有効にしてシステムを再ロードして再起動すると、サービス起動のsystemdグラフを取得すると、私が定義したBluetoothサービスの前にサービスが開始されたことがわかります。 システム図 bluetooth.targetに変更してみましたが、何の効果もありませんでした。 私は理解できません...

Admin

systemctlの状態に将来の時間と残りの時間が表示されるのはなぜですか?
linux
systemd
systemctl
systemd-timer
systemd-unit

systemctlの状態に将来の時間と残りの時間が表示されるのはなぜですか?

""をエクスポートすると、systemctl status通常、出力にステータスとそのステータスにあった時間を示す行が表示されます。 「いいね!」(数分前にこの記事を投稿しました) Active: active (running) since Wed 2023-11-22 01:56:06 CST; 10h ago ただし、システム時間が01:19:27 CSTの場合、同じサービスは次の行を受け取ります。 Active: active (running) since Wed 2023-11-22 **01:56:06** CST; 36min **left** なぜ「since」の後の時間は未来型ですか? 「残り」の時間が表示されるのはなぜですか?なぜ去るの? 私は過去の時間とx時間単位前の時間を見ることを期待しています。 systemctl list-timers --allサービスに関連するタイマーがあるかどうかを確認するために ""を実行してみましたが、何も見つかりませんでした。

Admin

Raspberry Piで一貫したイーサネットデバイス番号を取得するには?
systemd
ethernet

Raspberry Piで一貫したイーサネットデバイス番号を取得するには?

私はカスタムYocto Linuxイメージを含むRaspberry pi 3B +を持っています。オンボードイーサネットがeth0であり、USBイーサネットアダプタがeth1やusb_eth0などの他のものになりたいです。 1つのパイには常にオンボードイーサネット番号eth0がありますが、2番目のデバイスではUSBドングルは常にeth0に初期化され、オンボードイーサネットはeth1に初期化されます。 SSHとeth1にeth0を使用して異なるIPアドレスを取得し、別のネットワークに接続したいと思います。ただし、/etc/network/interfacesの構成とアプリケーションの両方がハードコードされた名前を使用します。私はさまざまな場所でこの動作を変えようとしています。たとえば、systemd/network にあります。 /etc/systemd/network/10-eth1.link: [Match] MACAddress=00:14:5c:9c:67:3b [Link] Description="White USB ethernet dongle" NamePolicy= Name=eth_usb ログ制御 -b: kernel: usb 1-1.1.2: new high-speed USB device number 7 using dwc_otg kernel[275]: [ 609.282053] usb 1-1.1.2: new high-speed USB device number 7 using dwc_otg kernel: usb 1-1.1.2: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 1.00 kernel: usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 kernel: usb 1-1.1.2: Product: AX88179 kernel: usb 1-1.1.2: Manufacturer: ASIX Elec. Corp. kernel: usb 1-1.1.2: SerialNumber: 00000000000:;3 kernel[275]: [ 609.418133] usb 1-1.1.2: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 1.00 kernel[275]: [ 609.418148] usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 kernel[275]: [ 609.418157] usb 1-1.1.2: Product: AX88179 kernel[275]: [ 609.418166] usb 1-1.1.2: Manufacturer: ASIX Elec. Corp. kernel[275]: [ 609.418175] usb 1-1.1.2: SerialNumber: 00000000000:;3 kernel: ax88179_178a 1-1.1.2:1.0 eth0: register 'ax88179_178a' at usb-3f980000.usb-1.1.2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:14:5c:9c:67:3b kernel[275]: [ 609.780308] ax88179_178a 1-1.1.2:1.0 eth0: register 'ax88179_178a' at usb-3f980000.usb-1.1.2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:14:5c:9c:67:3b systemd-udevd[563]: Using default interface naming scheme 'v243'. systemd-udevd[563]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable. systemd-udevd[563]: [[0;1;31m[[0;1;39m[[0;1;31meth0: Failed to rename network interface 5 from 'eth0' to 'eth_usb': Device or resource busy[[0m kernel: IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready kernel[275]: [ 610.139890] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready systemd-udevd[563]: [[0;1;38;5;185m[[0;1;39m[[0;1;38;5;185meth0: Failed to process device, ignoring: Device or resource busy[[0m systemd-networkd[288]: eth0: IPv6 successfully enabled ご覧のとおり、名前を変更できません。 また、/etc/udev/rules.d/70-pertant-net.rulesを変更してみました。 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:14:5c:9c:67:3b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="neweth0" しかし、これも失敗した。 また、/usr/lib/systemd/network/99-default.linkを追加してみました。しかし、このファイルは完全に無視されているようです。 私はいくつかのチュートリアルを試しましたが、それらのどれも私のデバイスで動作しないようです。 USBイーサネットドングルがオンボードイーサネットと同じ名前を持つことを望みます(衝突がないように最大1つのドングルを接続します)。 MACアドレスはボードとドングルによって異なるため、設定ファイルにMACアドレスを使用することは好きではありません。

Admin

他のサービスが「完了」した後にシステムサービスを開始する方法は?
systemd

他のサービスが「完了」した後にシステムサービスを開始する方法は?

私は常にサービスAに関連するプログラムがサービスBの前に完了するように実行する必要がある状況に直面しています。 「以降」では問題は解決しません。後で言う 最も重要なのは、サービスデバイスの場合、設定された起動コマンドがすべて呼び出され、失敗した場合、または成功した起動を報告した場合、Before = / After =の目的に応じて起動が完了したと見なされることです。 」、ただし、これは基本プロセスが正常に完了したことを意味するわけではありません。 私の考えには、機能に目立つ穴があるようです。サービスBがサービスAの正常な完了に依存している場合、サービスBをどのように起動しますか?

Admin

systemd linuxで2つのネットワークインターフェイスに静的IPを設定する方法
systemd
network-interface
yocto

systemd linuxで2つのネットワークインターフェイスに静的IPを設定する方法

systemd私は(ArchLinuxなど)/etc/systemd/network/20-wired.networkファイルを介した静的IP設定を可能にするYoctoディストリビューションを持っています。 eth02つのネットワークインタフェース(&)に対して固定IPを設定する必要がありますが、ファイルに指定して設定eth1できないようです。20-wired.networkまた、別々に設定してファイルを作成してみましたが、/etc/systemd/network/eth0.network動作し/etc/systemd/network/eth1/networkませんでした。 20-wired.networkきれいに設定できます。一つ相互作用。 2つのインターフェースを指定する方法についての指示を教えてくれてありがとう。

Admin

shスクリプトの私のコマンドは拒否されましたが、端末で同じコマンドを実行できます。
systemd
permissions
rhel
dash

shスクリプトの私のコマンドは拒否されましたが、端末で同じコマンドを実行できます。

RedHat 8.8でsystemctlによって実行されるサービスがあります。サービス自体は比較的簡単です。 cat /etc/systemd/system/myservice.service [Unit] Description=My service After=network-online.target [Service] Type=forking User=myuser Group=mygroup Restart=no TimeoutSec=60 ExecStart=/usr/lib/myapp/service.sh start ExecStop=/usr/lib/myapp/service.sh stop [Install] WantedBy=multi-user.target 「mygroup」のすべてのメンバーが「myuser」という名前でこのサービスを実行できるように、Sudoersファイルを設定します。 %mygroup ALL = (ALL : myuser) NOPASSWD: /usr/bin/systemctl start myservice 問題はservice.shファイルにあります。序文はです#!/bin/sh。 JBoss インスタンスを起動し、次のようないくつかのタスクを実行しようとします。 cat /dev/null > $JBOSS_CONSOLE_LOG START_FILE="${JBOSS_HOME}/start_user" ACCESS_USER="$(who am i | awk '{print $1}')" echo "${ACCESS_USER}" > ${START_FILE} 「myuser」を使用してSSHを介してログインし、次のようにこのサービスを開始すると、上記のコマンドでいくつかsudo systemctl start myserviceの権限拒否エラーが発生します。 JBOSS_CONSOLE_LOGにdevnullを入れようとしたとき: /usr/lib/myapp/service.sh: line 82: /opt/myapp/home/domain/log/console.log: Permission denied START_FILEで印刷しようとしたとき: /usr/lib/myapp/service.sh: line 92: /opt/myapp/home/start_user: Permission denied 私が知っている限り、ファイル権限は正しく設定されており、すべては「myuser」と「mygroup」が所有しています。 ll /opt/myapp drwrwxr-x+ 11 myuser mygroup 4096 Nov 14 20:56 home ll /opt/myapp/home drwxrwxr-x+ 10 myuser mygroup 4096 Nov 14 20:29 domain ll /opt/myapp/home/domain drwxrwxr-x+ 10 myuser mygroup 4096 Nov 14 20:29 log 端末から直接同じコマンドを実行すると正常に動作します。単純なtest.shファイルを作成してそこにコマンドを入れると、再びうまく実行されます。そのため、サービススクリプトを実行するときに何かを変更する必要がありますが、理由はわかりません。また、スクリプトが次のようにACCESS_USER変数を決定しようとしていることがわかりました。 ACCESS_USER="$(who am i | awk '{print $1}')" 空の結果が得られます。ただし、端末で同じコマンドを実行すると、「myuser」が正しく印刷されます。私のtest.shファイルでも動作します。 どこから始めるべきですか?これは私が使っている一種の製品なので、必ずサポートチームにお問い合わせいたしますが、たぶんここでもアイデアを得ることができるようです。 編集:あなたのコメントに感謝します。回答させていただきます。 @Chris Davies:$ JBOSS_CONSOLE_LOGは/opt/myapp/home/domain/log/console.log、$ JBOSS_HOMEは/opt/myappです。元の質問で既に所有者を共有しています。また、「whoami」と「Who am I」の説明に感謝します。以前読んだことがありましたが、今「Who am I」を操作するには端末が必要であることが明らかになりました。 @waltinatorと@muru:このスクリプトはcrontabでは実行されず、上記のサービスを起動すると実行されます。sudo systemctl start myservice元の質問のサービス説明をご覧ください。サービスを開始できるように、ユーザー "myuser"がsudoersファイルに追加されます。 @rivimey: "id"コマンドと "whoami"コマンドの出力を印刷していますが、正しいユーザーが表示されます。 echo "id = $(id), whoami = $(whoami) id = uid=1001(myuser) gid=1001(mygroup) groups=1001(mygroup) context=system_u:system_r:unconfined_service_t:s0, whoami = myuser また、「ps -ef」出力で実行中のスクリプトを確認すると、そのスクリプトを実行している正しいユーザーも表示されます。 編集2:ああ、SELinuxです...前の編集に入ったときにSELinuxを無効にしようとしましたが、サービスは正常に動作します。奇妙なことに、監査ログを手動で確認し、audit2allowコマンドを使用して監査ログを確認しようとしているため、「不足しているタイプの適用」ルールが表示されますが、私のアプリケーションとは関係ありません。より良い解決策が得られない場合は、回答として投稿します。

Admin

systemd[1]: [Eメール保護]: コード=dump、ステータス=7/BUSで終了した基本プロセス
arch-linux
systemd
linux-kernel
syslog-ng

systemd[1]: [Eメール保護]: コード=dump、ステータス=7/BUSで終了した基本プロセス

私はアーチLinuxを使用しています。 24時間走った後[Eメール保護]コアダンプ。 ログ: systemd[1]:[Eメール保護]:無効化が完了しました。 システム[1]:[Eメール保護]:メインプロセス終了、コード=dump、ステータス=7/BUS システム[1]:[Eメール保護]:「コアダンプ」で失敗しました。 システム[1]:[Eメール保護]:5.777秒のCPU時間が消費されました。 システム[1]:[Eメール保護]: ジョブが再始動するようにスケジュールされており、再始動カウンターは 2 です。 systemd[1]: システムロガーデーモンの「デフォルト」インスタンスを起動します。

Admin

システム設定イベントで表示関連命令を実行する
systemd
udev
xauth

システム設定イベントで表示関連命令を実行する

アップストリームを共有したいsystemd / udev設定を開発していますが、ハッキングされていない方法で動作させることはできません。デフォルトでは、私はこのスクリプトをsystemdサービスの実行者として使用します。 ICON="somepath/dslr-camera-white.png" function on-display() { local sdisplay=$(echo $XDG_SESSION_TYPE) if [ "$sdisplay" == "wayland" ]; then local display=":$(echo $WAYLAND_DISPLAY)" else local display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)" fi local user=$(who | grep '('$display')' | awk '{print $1}' | head -n 1) local uid=$(id -u $user) sudo -u $user DISPLAY=$display DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus "$@" } cleanup() { on-display notify-send -i $ICON "Disconnected" "The DSLR Camera has been turned off." --app-name="DSLR Webcam" trap - SIGTERM && kill -- -$$ } trap cleanup SIGINT SIGTERM EXIT on-display notify-send -i $ICON "Connected" "The DSLR Camera has been turned on and it is ready to use." --app-name="DSLR Webcam" on-display yad --window-icon=$ICON --image=$ICON --no-buttons --title="DSLR Webcam" --notification --listen & output=$(v4l2-ctl --list-devices) line=$(echo "$output" | grep "Virtual Camera") vdevice=$(echo "$output" | sed -n "/$line/{n;s/^\t\+//p;}") gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 $vdevice サービスのポイントは、特定のgphoto2対応カメラが接続されているときにudevルールによって開始されることであるため、次のudevルールがあります。 ACTION=="add", ATTR{idVendor}=="04a9", ATTR{idProduct}=="3218", RUN+="systemctl start dslr-webcam.service" ACTION=="remove", ATTR{idVendor}=="04a9", ATTR{idProduct}=="3218", RUN+="systemctl stop dslr-webcam.service" これまでsystemdサービスを使用するための代替案を読んだので、「いいね」ですRUN。しかし、とにかく... ここで質問は具体的にyad。 yadこれはCLIでダイアログボックスを表示できるプログラムです。カメラがアクティブになったときにシステムアイコンを表示したいので、システムアイコンを作成するために使用しました。 質問 とは異なり、notify-send一部の通常のソケットで動作する可能性があり、動作するにはyad適切な設定が必要です。XAUTHORITYそれ以外の場合。cannot open display: :0私の場合、ハッキーソリューションはSDDM(ディスプレイマネージャ)を使用しているので、/tmpスクリプトに追加できるようにディレクトリに常駐するので、正しいXauthorityに設定するだけでした。 XAUTHORITY=$(ls /tmp/xauth*) それから効果がありましたが…ひどいです。多くの仮定をし、実際に全体の機能on-displayも悪い考えのように見えました。これを別のシステムにインポートすると、適切なXauthorityが数え切れないほど多くの場所にいる可能性があり、まだWaylandを試したことがないので、おそらく動作しません(後で残します)。 何についてxauth どういうわけか正しいXauthorityを検索できると思いましたが、そうではありませんxauth...このスクリプトはシステムサービスなので、戻ってxauth info正しいAuthority file: /root/.xauthWV7OfUユーザーとして実行しましたが、sudo -u $user xauth info動作Authority file: /home/myuser/.Xauthorityしません。役割は与えられると与えられますyad。正しい役割はXAUTHORITYディスプレイマネージャによって設定されるため、子プロセスからのみインポートできるようです。 私もthisが提供するすべての方法を試しました。回答ところで、最初のものはXAUTHORITY実際にはシステム環境ではないので動作しません/run/sddm/xauth_KvyuHd。それはうまくいくので、xauthファイルとは異なります。/tmp/xauth_FzoQqz 前の質問と同じ質問から出ました。これこの方法は効果があるようですが、移植性がどれほど良いかはわかりません。そしてまだ陳腐に見えます。 ユーザーサービスとして実行 おそらく、これはユーザーとして実行されるのを防ぐスクリプトには何もないので、最も有望なものかもしれません(それも削除しましたon-display)。私はこれを試しましたが、カメラが接続されていて実行するとsystemctl --user start dslr-webcam.service期待どおりに動作します(含むyad)、今ルールに関する質問がありますudev。を含むいくつかの場所を検索しました。ここただし、ルールでシステムユーザーサービスを実行する方法が見つかりません。どのユーザーを使用するのか、udevどうすればわかりますか?udev

Admin

最近、システムの起動ログと終了ログが消去されました。
systemd
alma-linux

最近、システムの起動ログと終了ログが消去されました。

私はAlmaLinux 8サーバーを使用しており、最近パッチを適用しました。パッチプロセスが開始されてから5日後に、最近のシステムログがすべて消えたようです。これらのログは以前にも存在していましたが、今は5月8日以前のエントリのみを表示しています。 これが私が観察したものです: 最近のシステムログがありません:過去5日間のログがありませんでしたが、パッチ当日には存在しました。サーバー・パッチが適用された後は、後続の再始動は実行されませんでした。 古いsystemdログが存在します。 5月8日より前のエントリは引き続き利用できます。 その他のログの正常な循環:メッセージ、メール、セキュリティなどのログが期待どおりに循環しています。 デフォルト設定:rsyslogまたはログローテーション設定は変更されておらず、システムはデフォルト設定を使用します。メッセージログ:システムの起動メッセージと終了メッセージがここに記録されます。 私の質問: 最近のパッチでこの問題が発生しましたか? システムの起動メッセージと終了メッセージを保存するために必要な特定の設定はありますか? 最近のシステムログの欠落の問題を解決するには、どのような措置を講じることができますか? オンラインで検索してデフォルトのログローテーション設定を調べましたが、最新のシステムログがありませんが、以前のログと他のログが正しく回転している理由の明確な説明が見つかりませんでした。どんな洞察力や提案でも大変感謝いたします。

Admin