Bash 명령은 cronie에 의해 실행될 때 비동기적으로 실행됩니다.

Bash 명령은 cronie에 의해 실행될 때 비동기적으로 실행됩니다.

내 라즈베리 파이를 백업하는 bash 스크립트가 있습니다. 백업 명령을 실행한 후 내 컴퓨터가 종료되어야 합니다. 이것은 명령줄을 통해 스크립트를 실행할 때 작동합니다. 그러나 cronie가 실행되면 백업이 완료될 때까지 기다리지 않고 즉시 종료 명령으로 이동합니다.

이 문제에 대해 어떻게 해야 합니까?

쉘 스크립트:

#!/bin/bash

ssh [email protected] dd if=/dev/mmvblk0 bs=1M | gzip -c > /path/to/backup/$(date -I) && systemctl poweroff

답변1

ssh그냥 백그라운드에서 실행되는 것 같습니다 . 실제로 연결하고 즉시 ssh종료할 수 없으면 gzip즉시 종료되는 결과도 발생합니다. 그러나 파이프의 종료 코드는 마지막 명령의 종료 코드이므로( set -o pipefail이전에 사용되지 않은 경우) close 명령이 실행됩니다.

해당 사용자의 기본 파일에 없는 SSH 키를 사용하려면 ssh다음 옵션을 사용하여 키 파일에 알려야 합니다 -i.

ssh -i /home/user/.ssh/id_rsa [email protected] dd if=/dev/mmvblk0 bs=1M

관련 정보