システムサービス障害

システムサービス障害

毎週金曜日の18時以降、自動更新システム用のsystemdユニットを作成しようとしています。サービスを手動で開始すると、すべてがうまく機能しますsystemctl start --user autoupd.service

* autoupd.service - Autoupdate system
     Loaded: loaded (/home/user/.config/systemd/user/autoupd.service; static; vendor preset: enabled)
     Active: inactive (dead) since Sat 2020-0704 17:26:52 MSK; 3s ago
TriggeredBy: * autoupd.timer
    Process: 930 ExecStart=/user/bin/mate-terminal -e /home/user/.local/bin/update (code=exited, status=0/SUCCESS)
   Main PID: 930 (code=exited, status=0/SUCCESS)

Jul 04 17:26:52 localhost systemd[372]: Started Autoupdate system.
Jul 04 17:26:52 localhost systemd[372]: autoupd.service: Succeeded.

autoupd.timerただし、開始されたサービスが奇妙なエラーのために失敗した場合、正しく理解できません。

* autoupd.service - Autoupdate system
        Loaded: loaded (/home/user/.config/systemd/user/autoupd.service; static; vendor preset: enabled)
        Active: failed (Result: exit-code) since Sat 2020-0704 17:23:54 MSK; 1min 27s ago
   TriggeredBy: * autoupd.timer
       Process: 378 ExecStart=/usr/bin/mate-terminal -e /home/user/.local/bin/update (code=exited, status=1/FAILURE)
      Main PID: 378 (code=exited, status=1/FAILURE)

Jul 04 17:23:53 localhost systemd[372]: Started Autoupdate system.
Jul 04 17:23:54 localhost mate-terminal[378]: Failed to parse arguments: Cannot open display:
Jul 04 17:23:54 localhost systemd[372]: ^[[0;1;39m^[[0;1;39mautoupdate.service: Main process exited, code=exiited, status=1/FAILURE
Jul 04 17:23:54 localhost systemd[372]: ^[[0;1;38;5;185m^[[0;1;39m^[[0;1;38;5;185mautoupdate.service: Failed with result `exit-code' 

なぜこれが起こるのか、解決策を知っている人はいますか?私のソースは次のとおりです。

/home/user/.config/systemd/user/autoupd.timer

[Unit]
Description=Autoupdate timer

[Timer]
OnCalendar=Sat 17:23
Persistent=true
Unit=autoupd.service

[Install]
WantedBy=timers.target

/home/user/.config/systemd/user/autoupd.service

[Unit]
Description=Autoupdate system

[Service]
Type=simple
ExecStart=mate-terminal -e "/home/user/.local/bin/update"

/home/user/.local/bin/update

#!/bin/sh
sudo pacman -Syu
echo ""
echo "Press Enter to exit..."
read

DISPLAY="" /home/user/.local/bin/updateの出力

 user@localhost ~ DISPLAY="" /home/user/.local/bin/update
:: Synchronizing package databases...
 core is up to date
 extra                1676.8 KiB  9.63 MiB/s 00:00 [######################] 100%
 community               5.0 MiB  8.87 MiB/s 00:01 [######################] 100%
 multilib              163.6 KiB  9.40 MiB/s 00:00 [######################] 100%
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (7) exempi-2.5.2-1  inkscape-1.0-5  libmagick6-6.9.11.23-1
             libmpdclient-2.19-1  libvorbis-1.3.7-2  poppler-0.90.0-1
             poppler-glib-0.90.0-1

Total Download Size:    22.69 MiB
Total Installed Size:  174.59 MiB
Net Upgrade Size:        0.12 MiB

:: Proceed with installation? [Y/n] n

Press Enter to exit...

ベストアンサー1

だから私は「あなたが間違っているのです」という答えを頻繁にしませんが、おそらくそうしてはいけません。実際にはpacman手動でのみ呼び出す必要があります。

より健康な代わり:

  • データベースファイルを更新するには、更新するパッケージリストの表示に移動し、必要に応じていくつかのスクリプトを直接作成できますpacman -Syycheckupdates

  • 更新が可能なときに更新するには、次のようにしてみてください。発見する、または次のようなより軽い代替アルチャフまたはスキーマ更新インジケータ

  • RSSを読む必要がある場合は、以下を使用することをお勧めします。被調査者;Pre-Install一部のニュースを読んだとマークしない場合は、パックマンのインストールを中止するパックマンフックが含まれています。

ただし、これを行うには、ひどいフラグを使用する必要があります--noconfirm

これで「本当にですか?」メッセージは無視されます。インストールすると被調査者新しいニュースが公開されると、パックマンは停止し続けますが、これは依然として「危機」と見なされます。

おすすめ記事