스크립트가 다른 스크립트를 호출합니까?

스크립트가 다른 스크립트를 호출합니까?

나는 몇 가지 스크립트를 작성했습니다. 무기한으로 작동하나요? 결국 CPU 과부하로 이어질까요?

먼저 이것은 로컬 NAS에 있으며 어떤 이유로 제조업체가 루트 액세스를 제공하지 않거나 su에 관리자 계정이 있으므로 cron을 사용하여 스크립트를 호출할 수 없습니다.

첫 번째 스크립트

#!/bin/bash
#connect to server download files

rsync -ae "ssh -p 10045 -T -o Compression=no -x" --progress [email protected]:/APPBOX_DATA/apps/rutorrent.witzend007.appboxes.co/torrents/completed/toNAS /mnt/md0/User/admin/home/incomingdata/ --delete

wait

#copy files to temp folder
cp -r /mnt/md0/User/admin/home/incomingdata/toNAS /mnt/md0/User/admin/home/incomingdata/temp

wait

#Start Filebot and organise and rename files to plex library
~/filebot-portable/filebot.sh -script fn:amc --output "/mnt/md0/public/Media" --action move -non-strict "/mnt/md0/User/admin/home/incomingdata/temp" --log-file amc.log --def excludeList=amc.txt

wait

#remove temp folder/files

rm -r /mnt/md0/User/admin/home/incomingdata/temp

wait

#start sleep script
( "/mnt/md0/User/admin/home/filebot-portable/martinsleep.sh" )

두 번째 스크립트 호출(설정된 시간을 기다린 후 첫 번째 스크립트 호출)

#!/bin/bash

sleep 60
wait
( "/mnt/md0/User/admin/home/filebot-portable/martinsamc.sh" )

그런 다음 다음을 사용하여 vssh를 종료합니다.

  • Ctrl-Z
  • 배경
  • 부인하다

이 방법은 작동하며 vssh가 닫힐 때 스크립트는 백그라운드에서 계속 실행됩니다.

절전 시간을 30분으로 변경할 계획입니다. 이로 인해 많은 스크립트가 열리고 결국 리소스가 소모될까 걱정됩니다.

이를 달성할 수 있는 더 좋은 방법이 있습니까?

답변1

스크립트는 지속적으로 서로 호출하므로 결국에는 스택 공간이나 메모리가 부족해지게 됩니다(그러나 아마도 몇 년 동안은 그렇지 않을 것입니다).

더 나은 코딩을 위해 루프 전에 1분 동안 일시 중지되는 단일 스크립트를 사용하는 것을 고려해야 합니다.

#!/bin/bash
incoming=/mnt/md0/User/admin/home/incomingdata

while :
do
    # connect to server download files
    rsync -ae "ssh -p 10045 -T -o Compression=no -x" --progress  --delete [email protected]:/APPBOX_DATA/apps/rutorrent.witzend007.appboxes.co/torrents/completed/toNAS "$incoming/"

    # copy files to temp folder
    cp -r "$incoming/toNAS/." "$incoming/temp"

    # Start Filebot and organise and rename files to plex library
    ~/filebot-portable/filebot.sh -script fn:amc --output "/mnt/md0/public/Media" --action move -non-strict "$incoming/temp" --log-file amc.log --def excludeList=amc.txt

    # remove temp folder/files
    rm -r "$incoming/temp"

    # Wait 60 seconds
    sleep 60
done

관련 정보