시스템 서비스 실패

시스템 서비스 실패

매주 금요일 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 -Syy.checkupdates

  • 업데이트가 가능할 때 업데이트하려면 다음과 같이 시도해 보십시오.발견하다, 또는 다음과 같은 더 가벼운 대안알차푸, 또는스키마 업데이트 표시기.

  • RSS 읽기가 필요한 경우 다음을 사용하는 것이 좋습니다.피조사자; Pre-Install일부 뉴스를 읽은 것으로 표시하지 않으면 팩맨 설치를 중단하는 팩맨 후크가 포함되어 있습니다.

그러나 이렇게 하기로 결정했다면 끔찍한 플래그를 사용해야 합니다 --noconfirm.

이렇게 하면 "정말입니까?" 메시지가 무시됩니다. 설치하면피조사자새로운 뉴스가 게시되면 팩맨은 계속 정지되지만 이는 여전히 "위기"로 간주되므로 주의하세요.

관련 정보