脚本调用另一个脚本?

脚本调用另一个脚本?

我写了几个脚本。它们会无限期地工作吗?最终会导致 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

相关内容