私はいくつかのスクリプトを書いた。無期限に動作しますか?結局、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