最新記事

ネットワークがsystemdに接続したら、.shファイルを介してrcloneサービスを開始します。
shell-script
systemd
services
rclone

ネットワークがsystemdに接続したら、.shファイルを介してrcloneサービスを開始します。

システムの起動/再起動時にネットワーク接続を受信するとすぐに、rcloneサービスがドライブをマウントできるようにします。 これまで端末を介してすべてを正しくインストールしました。デフォルトでは、実行するための単純な.shファイルを作成しました。 #!/bin/sh ! mountpoint -q /home/{user}/{location}/{location} || umount /home/{user}/{location}/{location} rclone mount {nameofservice}: /home/{user}/{location}/{location} --config /home/{user}/.config/rclone/rclone.conf 端末で実行すると、期待どおりに動作します。 systemdを使用してネットワーク接続を実装した後、オンラインチュートリアルに従って動作し、755 +x権限で次のファイルを作成しました。/etc/systemd/system/{nameof.service} [Unit] Description=Starts {nameof.service} rclone service on startup Wants=network-online.target After=network-online.target [Service] Type=simple User={user} Group={group} ExecStart=/home/{user}/{nameofsh}.sh TimeoutStartSec=5 RemainAfterExit=yes [Install] WantedBy=network-online.target 特定のユーザーとして実行するために必要です。このファイルを作成した後、私も次のことをしました。 systemctl daemon-reload systemctl enable {nameof.service} このチュートリアルでは、アクティベーションコマンドはシンボリックリンクの作成に関するメッセージを返すことを期待していましたが、理解していませんでした。新しい行にサイズを変更するだけですが、それは重要だとは思わない。 とにかく実行すると予想される結果が出ますが、systemctl restart {nameof.service}起動や再起動では結果が出ません。 この時点では、私が間違っているのかわからないので、助けてくれてありがとう。

Admin

スクリプトを使用してアクティブシステムの確認リンク番号を確認するにはどうすればよいですか?
bash
systemd
dns

スクリプトを使用してアクティブシステムの確認リンク番号を確認するにはどうすればよいですか?

複数のresolvectlコマンドがリンク番号をパラメータとして使用するため、どのリンクがアクティブ(現在)リンクであるかをどうやって知ることができますか? これまで私は以下を持っています: $ resolvectl status | grep -PB1 'Current Scopes.*\bDNS\b' | head -n 1 Link 3 (br0) もっと良い方法がありますか?

Admin

特定の検査でRC 0が返された後にsystemdサービスを開始します。
systemd
services
reboot

特定の検査でRC 0が返された後にsystemdサービスを開始します。

systemd を使用してシステムを起動すると、1 つのサービスが正常に起動できます。しばらくすると、サービスは特定の構成をシステムに適用します。 一度その設定を適用した後、crondという別のサービスを起動したいと思います。設定が適用されたことを確認するコマンドがあります。コマンドが戻りコード0を返した場合は、別のサービスクローンを開始する必要があります。 コマンド例: grep something file.txt#これは小切手です。 file.txt に「何か」がある場合、RC 0 が返されます。 サービスの開始後に設定が適用されるため、使用After=できません。Before=これはすぐには行われず、最大30秒かかることがあります。 尋ねる:特定のチェックの戻りコードが0の後に開始されるようにsystemdサービスを構成する方法は?

Admin

誤って/etc/systemdを上書きしましたか?
centos
systemd
mv

誤って/etc/systemdを上書きしましたか?

はい/etc/init.d。それから引っ越したくてfile.serviceそうしましたmv file.service ../systemd。まだ/etc/systemdそこにありますが、file.serviceはどこにもありません。誤ってsystemdディレクトリの名前を変更しましたが、次回の再起動時に反映されるのではないかと心配です。では、これからはこのようにすべきでしょうかmv file /directory/?

Admin

システムアップデート後に起動できない場合、Arch linux(ホストネームサービスを起動できない場合)など
arch-linux
systemd
boot
pacman

システムアップデート後に起動できない場合、Arch linux(ホストネームサービスを起動できない場合)など

システムを更新した後、pacmanシステムを起動できませんでした。一部のサービスが起動時に開始されないようです。次のように表示されます:エラー 起動できませんでしたホスト名サービス。 起動できませんでしたWPAの申請者。 起動できませんでしたネットワーク管理者スクリプトスケジューラサービス。 起動できませんでしたdhcpd さまざまなインターフェースで。 起動できませんでしたユーザーセッションを許可します。 私が試した解決策: 起動可能なUSBを使用して、 ドライバをインストールしましたが、 arch-chrootシステムに入り、 パッケージを更新して再インストールしたlinux後、mkinitpcioArch systemd-wikiのトラブルシューティングのアドバイスに従いました。 上記の方法が失敗したため、「Rescue」モードでシステムを開き、サービスを手動で開始しましたsystemd-hostnamed。それから私のコンピュータが起動しました。これが正常になります。しかし、これは長続きしませんでした。systemd-user-sessionsdhcpd 次の再起動後も同じ問題が発生します。毎回システムを回復モードで開く必要があります。 解決策を提案してください。私は理由を全く知らない。よろしくお願いします。

Admin

対象を孤立させると、手配勢力と衝突勢力は正確にどうなりますか?
systemd
systemd-unit
systemd-boot

対象を孤立させると、手配勢力と衝突勢力は正確にどうなりますか?

次のユースケース:ターゲットには単位Aと単位が必要です。ユニット衝突。デバイスはデバイスの前に起動します。システムがターゲットとして起動します。BTABBAT わかったら文書そうですね。デバイスは起動時にデバイスを停止Aします。B私はデバイスがB起動するのをまったくブロックしません。私の家は正しいですか?

Admin

BashまたはPythonスクリプトのログを特定のログユニット名にどのように追加できますか?
systemd
logs
systemd-journald
journalctl

BashまたはPythonスクリプトのログを特定のログユニット名にどのように追加できますか?

スクリプト(bash、pythonなど)私のロギングと印刷はデバイス名とどのように関連していますか? 非常に単純な単位ファイルtest-service.serviceがあるとしましょう。 [Unit] Description=Test Unit [Service] Type=simple User=myuser Group=myuser ExecStart=/usr/bin/bash /home/myuser/hello.sh [Install] WantedBy=default.target hello.sh には以下が含まれます。 #!/bin/bash echo "Hello World" その特定のユニットファイルのログを表示しようとすると、「Hello World」ログ行は表示されません。 journalctl -u test-service -f -- Logs begin at Mon 2019-12-09 10:07:15 CET. -- Dec 09 10:10:51 localhost.localdomain systemd[1]: Started Test Unit. 単位でフィルタリングせずに Journalctl を実行すると、次のログ行が表示されます。 journalctl -f -- Logs begin at Mon 2019-12-09 10:07:15 CET. -- Dec 09 10:14:07 localhost.localdomain bash[4776]: Hello World これで、このユニットファイルでも同じことが起こります。 [Unit] Description=Test Unit [Service] Type=simple User=myuser Group=myuser ExecStart=/usr/bin/python /home/myuser/test.py [Install] WantedBy=default.target test.py には以下が含まれます。 import logging class TestService(object): def __init__(self): logging.basicConfig() self.log = logging.getLogger("test-service") self.log.setLevel(logging.INFO) def hello_world(self): exit_code = 0 print("Hello world, exit_code = {}".format(exit_code)) self.log.info("Hello world!!!") exit(exit_code) if __name__ == "__main__": print("starting up..") r = TestService() r.hello_world() その特定のユニットファイルのログを再表示しようとすると、「Hello World」ログ行は表示されません。 journalctl -u test-service -f -- Logs begin at Mon 2019-12-09 10:07:15 CET. -- Dec 09 10:10:51 localhost.localdomain systemd[1]: Started Test Unit. 単位でフィルタリングせずにJournalctlを実行すると、次のログ行が表示されます。 systemd[1]: Started Test Unit. Dec 09 10:28:52 localhost.localdomain python[5449]: INFO:test-service:Hello world!!! Dec 09 10:28:52 localhost.localdomain python[5449]: starting up.. Dec 09 10:28:52 localhost.localdomain python[5449]: Hello world, exit_code = 0 BashとPythonスクリプトのスクリプトは、ユニットファイルとどのような関係がありますか? "bash[4776]" と "python[5449]" はスクリプトに関連するデフォルトのユニット名ですか、それともデフォルトは何ですか?

Admin

RHEL 7は環境機能をサポートしていますか?
centos
rhel
systemd

RHEL 7は環境機能をサポートしていますか?

私はこの問題について混乱しており、インターネット検索に情報が制限されています。 一部の人々は、これをサポートするにはsystemd v229以降が必要だと言います。 https://github.com/antoiner77/caddy-ansible/issues/31 Red Hat の変更ログには、RHEL 7.3 からサポートが可能であると記載されています。 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.3_release_notes/new_features_kernel しかし、これは私のクエリの結果と競合します。どんな文が正しいですか? Ambient機能の実際のサポートを確認する方法はありますか? # systemctl --version systemd 219 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN # rpm -q centos-release centos-release-7-6.1810.2.el7.centos.x86_64

Admin

システムユーザーサービスが開始されていません。
systemd
systemd-user

システムユーザーサービスが開始されていません。

起動時にユーザーサービスを開始しようとしています。 LinuxベースのTableauの場合(Ubuntu 19.04サーバー、GUIなし) Tableau は、サービスを実行するための管理者以外のユーザーを作成します。システムサービスを作成します /etc/systemd/system/[email protected]ここにいる [Unit] Description=User Manager for UID %i After=systemd-user-sessions.service [Service] LimitNOFILE=131072 LimitNPROC=32768 User=%i PAMName=systemd-user Type=notify PermissionsStartOnly=true ExecStartPre=/bin/loginctl enable-linger %i ExecStart=/lib/systemd/systemd --user Slice=user-%i.slice KillMode=mixed Delegate=yes TasksMax=infinity Restart=always RestartSec=15 [Install] WantedBy=default.target ホストを再起動し、無関係なユーザーとしてログインして確認すると、問題が実行に明らかに関連していることがわかります。systemctl status [email protected]systemd --user 自分で試してみると、ディレクトリがsudo su - tableauないと文句を言うか、/run/user/$(id -u)$ XDG_RUNTIME_DIRが定義されていないかスライスすることはできません journalctl -xe。 したがって、pam_systemdは表示または一覧表示できず、tableauが怒って実行されるように/run/user/ID設定されていないため、サービスが失敗します。$XDG_RUNTIME_DIRsystemd --useruser@997 コンソールまたはSSHを介しても「tableau」ユーザー(ID 997)にログインすると、「ログイン」セッションが作成されたように見え、すべてが続行され、すべてがいっぱいになり、通常どおり開始され/run/user/997ます。その後、/run/user/997サービスが作成され、サービスが一度ロードしようとすると問題なくログアウトでき、enable-lingerすべてuser@997が正常に機能します。 私のポイントはドキュメントで見たことです(初期プロセスは基本的にこの設定を持っているので、おそらくTableauの経験から来たようです)。User=997 ; PAMName=systemd-user しなければならない 働いている。そしてしなければならないsystemdを介してuid 997 / tableauでプロセスを作成しますが、何らかの理由で地域を定義しません/run/user/997。 ディレクトリが見つかると/run/user/997すぐにサービスをロードし、Tableauは内部初期化プロセスを開始します。 それからuser@997状態はこんな感じです

Admin

/var/lib/systemd/coredump/ — これは何で、削除できますか?
systemd
disk-usage
manjaro
core-dump

/var/lib/systemd/coredump/ — これは何で、削除できますか?

私はManjaro KDEを実行しており、/var/lib/systemd/coredump/フォルダサイズは約500MBです。どの用途に使用され、削除しても安全ですか?sudo systemctl status実行中でエラーが発生していないデバイスを表示します。

Admin

systemdを使用したMTPデバイスのマウント
linux
systemd
mount
mtp

systemdを使用したMTPデバイスのマウント

Linux:確立されたシンステーション6.2プロジェクト(systemdから) 仕事:シンクライアントに接続すると、MTPデバイス(Android携帯電話など)を自動的にマウントします。 質問:デバイスの接続中にディストリビューションの読み込み中にエラーが発生したか、デバイスが正しくインストールされていません。 インストール中に使用されるソフトウェア: シンプルなmtpfs、Androidファイル転送 - Linux、Android-udev-ルール 最初の試み ルールに51-android.rules、携帯電話をシンクライアントに接続する場合に備えてプログラム実行を追加しました。 ... # Skip other vendor tests LABEL="android_usb_rule_match" RUN+="/etc/udev/scripts/mtp.sh" ... 私のスクリプトは、接続する/etc/udev/scripts/mtp.shとデバイスのインストールを実行します。 #!/bin/sh . /etc/thinstation.env . $TS_GLOBAL if [[ $ACTION == "add" ]]; then echo "********************* START MOUNT *******************" | systemd-cat -p info -t "mtp" /bin/aft-mtp-mount /phone grep -oe "/phone" /proc/mounts | systemd-cat -p err -t "mtp" ls "/phone/Внутренний общий накопитель" | systemd-cat -p err -t "mtp" echo "********************** END MOUNT ********************" | systemd-cat -p info -t "mtp" elif [[ $ACTION == "remove" ]]; then echo "******************** START UNMOUNT ******************" | systemd-cat -p info -t "mtp" umount /phone echo "********************* END UNMOUNT *******************" | systemd-cat -p info -t "mtp" fi PS BusyBoxはTSにログを書き込まないecho ...ため、ロギング構造を使用しています。logger 私のデバイスがマウントされていない理由を確認するために、ロギングスクリプトを使用しました。あるいは、むしろインストールしてから時間が経つにつれて落ちたが、システムにはインストールされたデバイスとは見えなかった。インターネットでグーグルして見つけた情報systemdはデフォルトで別々の「マウントネームスペース」を使用してsystemd-udevd.serviceを実行します。 2回目の試み ルールを書き直しました51-android.rules次のように: ... # Skip other vendor tests LABEL="android_usb_rule_match" ACTION=="add", PROGRAM="/bin/aft-mtp-mount -p [email protected] $env{ID_MODEL}_$env{ID_VENDOR}", ENV{SYSTEMD_WANTS}+="%c" ... そして以下を入力してください:/etc/systemd/system/[email protected] [Service] Type=oneshot ExecStart=/etc/udev/scripts/mtp.sh /etc/udev/scripts/mtp.shそのため、イベントにのみ応答するようにスクリプトを書き直しましたadd。 #!/bin/sh . /etc/thinstation.env . $TS_GLOBAL /bin/aft-mtp-mount /phone テスト中にスクリプトを使用せずに直接ディレクトリをアンマウントしたと仮定するのは妥当です。その結果、電話は常に最初の接続に失敗します。数分の接続制限に何らかのタイムアウトがあるように感じます。結局、私は問題が何であるかを知りませんでした。 3回目の試み この問題を解決するための全体的なプロセスは次のようになりました。stackoverflowですでに利用可能。この投稿でソリューションを再現しようとしています。 修正済み51-android.rulesスクリプトは次のとおりです。 ... # Skip other vendor tests LABEL="android_usb_rule_match" ACTION=="add", RUN+="/bin/systemctl start mtp@$env{ID_VENDOR}_$env{ID_MODEL}_$env{ID_REVISION}.service" ACTION=="remove", RUN+="/bin/systemctl stop mtp@$env{ID_VENDOR}_$env{ID_MODEL}_$env{ID_REVISION}.service" ... そして以下を入力してください:/etc/systemd/system/[email protected] [Service] Type=oneshot RemainAfterExit=true ExecStart=/etc/udev/scripts/mtp.sh add %I ExecStop=/etc/udev/scripts/mtp.sh remove %I そして実行スクリプトをマウントします/etc/udev/scripts/mtp.sh。 #! /bin/sh . /etc/thinstation.env . $TS_GLOBAL ACTION=$1 DEVICE_NAME=$2 MOUNT=/bin/aft-mtp-mount CURRENT_DEVICE_MOUNT_PATH=$BASE_MOUNT_PATH/$USB_MOUNT_DIR/$DEVICE_NAME _logger() { echo "$2" | systemd-cat -p $1 -t "mtp" } _mounted() { if [ -n "$(grep -oe "$1" /proc/mounts)" ]; then return 0 else return 1 fi } _mount() { _logger info "mount $DEVICE_NAME" if [ -d $CURRENT_DEVICE_MOUNT_PATH ] && _mounted $CURRENT_DEVICE_MOUNT_PATH; then _logger warning "$DEVICE_NAME already mounted" exit 1 fi if [ ! -d $CURRENT_DEVICE_MOUNT_PATH ]; then mkdir $CURRENT_DEVICE_MOUNT_PATH if is_enabled "$USB_STORAGE_SYNC" && [ ! -n "$(echo $USB_MOUNT_OPTIONS | grep -e sync)" ]; then USB_MOUNT_OPTIONS=$USB_MOUNT_OPTIONS,sync fi $MOUNT -o $USB_MOUNT_OPTIONS $CURRENT_DEVICE_MOUNT_PATH if _mounted $CURRENT_DEVICE_MOUNT_PATH && [ "$(ls -A $CURRENT_DEVICE_MOUNT_PATH)" ]; then _logger info "mounted $DEVICE_NAME in $CURRENT_DEVICE_MOUNT_PATH" else _logger warning "$DEVICE_NAME failed to mount" _umount exit 2 fi else _logger warning "$CURRENT_DEVICE_MOUNT_PATH already exists" exit 3 fi } _umount() { _logger info "unmount $DEVICE_NAME" if [[ -d $CURRENT_DEVICE_MOUNT_PATH ]]; then while _mounted $CURRENT_DEVICE_MOUNT_PATH; do umount $CURRENT_DEVICE_MOUNT_PATH done _logger info "unmounted $DEVICE_NAME in $CURRENT_DEVICE_MOUNT_PATH" rm -r $CURRENT_DEVICE_MOUNT_PATH else _logger warning "$DEVICE_NAME was not mounted" fi } if [ $ACTION == "add" ]; then _mount elif [ $ACTION == "remove" ]; then _umount fi exit 0 今、すべてが期待どおりに動作します!しかし、ニュアンスがあります。 起動中に電話機が最初にシンクライアントに接続された場合、システムは開かれません。起動中にダイヤルアップが切断されると、シンクライアントのロードに問題はなく、接続するとインストールが正常に機能します。 シンクライアントのダウンロード中にsystemd-udevd読み込もうとしたようです。51-android.rulesルールを適用し、モバイルインストールスクリプトを呼び出すため、追加のロードの問題が発生します。 ダウンロードデータを抽出してみたところ、次のようになります。 システム化されたサービスロードスケジュール カーネルログ わかりません。実装がすべて間違っているか、問題がある可能性があります。さまざまなオプションを試しているようです。デバイスのマウントを試みることができますが、systemd-mountMTPプロトコルを介したマウントはサポートされていません。それとも別の方法で達成できますか?このトピックに関するその他の情報が見つかりませんでした。行き詰まった路地に至ったので、ご存知の方にお願いします。アーチ法廷。テーマを作ってみましたGitHubしかし、現在まで何の進展もありません。

Admin