Openbox가 있는 Arch Linux 시스템이 있고 자동 시작 스크립트(bash)에서 업데이트를 실행하고 싶었습니다. 그래서 자동 시작에 다음 명령을 추가했습니다. ( rxvt -e sudo pacman -Syu &
즉, 터미널을 열고 rxvt
Archlinux 패키지 관리자 표준 업데이트 명령을 실행합니다 pacman
.)
그러나 때때로 데이터베이스가 pacman
다른 프로세스에 의해 잠긴 다음 명령이 실패하고 rxvt
아무 작업도 하지 않고 닫히는 경우가 있습니다. 따라서 먼저 pacman을 사용하여 잠금을 제거하고 싶습니다 rxvt -e sudo rm /var/lib/pacman/db.lck && sudo pacman -Syu &
(pacman에서 잠금을 제거한 다음 업데이트). 첫 번째 명령만 인스턴스에서 실제로 실행되기 때문에 이는 작동하지 않습니다 rxvt
.
올바른 방법이 있습니까 (flags로 열린 터미널에서 두 명령을 모두 실행 -e
)? 나는 두 개의 별도 터미널을 열고 각각 하나의 명령을 실행할 수 있다는 것을 알고 있지만 그것은 나에게 정말 혼란스러워 보입니다. 또는 잠금이 존재하지 않는지 확인하는 또 다른 더 쉬운 방법이 있는 경우 그렇게 할 수도 있습니다(비록 출력을 명확하게 볼 수 있도록 동일한 터미널에서 사용하는 것을 선호하지만 rm
).
답변1
단일 명령으로 만들려면 따옴표를 사용하세요.
rxvt -e "sudo rm /var/lib/pacman/db.lck && sudo pacman -Syu" &
일부 터미널에서는 이를 쉘 명령으로 래핑해야 합니다. 예를 들면 다음과 같습니다.
rxvt -e sh -c "sudo rm -f /var/lib/pacman/db.lck && sudo pacman -Syu" &
파일이 존재하지 않으면 이 -f
플래그는 파일을 무시하고 오류를 방지합니다.