![특정 폴더에서 발생하는 변경 사항을 기반으로 스크립트를 어떻게 실행할 수 있나요?](https://linux55.com/image/133440/%ED%8A%B9%EC%A0%95%20%ED%8F%B4%EB%8D%94%EC%97%90%EC%84%9C%20%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94%20%EB%B3%80%EA%B2%BD%20%EC%82%AC%ED%95%AD%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
특정 이미지의 크기를 변경하려면 다음 명령을 사용합니다.
mogrify -geometry x50 my_image.png
새로운 인쇄 화면을 찍을 때마다 이미지가 내 ~/Pictures
폴더에 저장됩니다. 내 Pictures
폴더를 감시하고 이미지의 새로운 축소 버전을 내 컴퓨터의 다른 폴더에 복사하는 작업을 수행하는 스크립트를 만들고 싶습니다 . 예를 들어 ~/.icons/
...
이 문제에 대한 해결책을 사용할 수 있다는 것을 알고 있지만 cron
정기적으로 조치를 취하고 싶지는 않습니다. 로그 등을 기반으로 폴더의 차이점을 파악할 수 있는 명령(또는 스크립트)이 필요합니다. 그게 가능합니까? 어떻게 해야 합니까?
답변1
나는 내 문제를 해결하기 위해 이 기능적 스크립트를 만들었습니다 inotify-tools
. 그래서 다른 사람들에게 유용할 경우를 대비해 여기에 남겨둡니다.
#!/bin/bash
watchedFolder=~/Pictures
iconsFolder=~/.icons
imageGeometry=100
while [ true ]
do
fileName=$(inotifywait -q -e create --format "%f" "$watchedFolder")
if ! [ -d $iconsFolder ]; then mkdir -p $iconsFolder ; fi
sleep 1s
cp $watchedFolder/"$fileName" $iconsFolder
mogrify -geometry x$imageGeometry $iconsFolder/"$fileName"
done
예를 들어 저장 ~/automatedIcons.bash
하고 실행 가능하게 만드십시오 chmod +x ~/automatedIcons.bash
. 이제 실행하면 이미 작동하며 Pictures
폴더 내에 생성된 모든 새 사진을 새 위치에 복사하고 크기를 변경합니다. 부팅 시 실행되도록 하려면 crontab -e
위의 스크립트 위치가 포함된 줄을 사용하고 작성합니다(예 @reboot /home/myUserName/automatedIcons.bash
: .
이것은 단지 함수 스크립트일 뿐입니다. 따라서 작동 방식을 개선하기 위한 제안 사항이 있는 경우 댓글로 자유롭게 적어주세요.