我写了几个脚本。它们会无限期地工作吗?最终会导致 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" )
调用第二个脚本(等待设定时间并调用第一个脚本)
#!/bin/bash
sleep 60
wait
( "/mnt/md0/User/admin/home/filebot-portable/martinsamc.sh" )
然后我使用退出 vssh
- ctrl-z
- 背景
- 否认
此方法有效,脚本在 vssh 关闭的情况下继续在后台运行
我确实计划将睡眠时间更改为 30 分钟,我担心这只是打开大量脚本,最终会消耗资源
有更好的方法让我实现这一目标吗?
答案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