
웹캠 사진 파일을 폴더로 정리하려고 합니다. 그렇지 않으면 한 폴더에 수천 장의 사진이 들어옵니다.
나는 foscam-move.sh 스크립트를 가지고 있습니다.하위 디렉터리를 만들고 날짜별로 파일을 정리하세요.) 다음과 같습니다.
#!/bin/bash
for x in *.jpg; do
d=$(date -r "$x" +%Y-%m-%d)
mkdir -p "$d"
mv -- "$x" "$d/"
done
내 스크립트는 모든 .jpg 파일이 포함된 폴더에 있습니다.
터미널에서 실행하면 모든 것이 잘 정리되어 있습니다.
다음 cron 작업을 추가하면 실행되지 않습니다.
* * * * * /home/pi/Desktop/FI9821W_************/snap/foscam-move.sh # JOB_ID_2
이 카메라는 사진을 많이 찍기 때문에 1분마다 실행되도록 설정했습니다.
cron이 매분마다 스크립트를 실행하도록 하려면 어떻게 해야 합니까?
답변1
cron은 사용자와 다른 환경에서 실행됩니다. 올바른 디렉토리에 있지 않기 때문에 뭔가 문제가 있을 수 있습니다. 루프를 실행하기 전에 cd
이미지가 포함된 디렉토리에 스크립트를 배치하세요 for
.
답변2
Cron 작업은 현재 작업 디렉터리를 사용자의 홈 디렉터리로 사용하여 시작됩니다.
스크립트를 실행하면 작업 디렉터리가 스크립트의 상위 디렉터리로 자동 변경되지 않습니다. 이렇게 하려면 cd
스크립트에서 다음을 수행해야 합니다.
#! /bin/sh -
cd -P -- "$(dirname -- "$0")" || exit
# rest of your script that has nothing bash-specific in it
# by the way.
또는 스크립트가 실행하려는 폴더와 관련이 없으므로 일반 위치(예: ~/bin
)에 저장하고 디렉터리 경로를 인수로 전달합니다.
#! /bin/sh -
cd -P -- "${1?no directory provided}" || exit
# ...