スクリプトは別のスクリプトを呼び出しますか?

スクリプトは別のスクリプトを呼び出しますか?

私はいくつかのスクリプトを書いた。無期限に動作しますか?結局、CPU過負荷につながりますか?

まず、これはローカルNASにあり、何らかの理由で製造元がrootアクセスを提供していないか、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" )

2番目のスクリプト呼び出し(設定された時間を待ってから最初のスクリプト呼び出し)

#!/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

関連情報