gpt4 book ai didi

linux - 无人登录时如何运行维护脚本?

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:29 24 4
gpt4 key购买 nike

我必须在 ubuntu 服务器上为硬盘运行维护脚本(创建一些索引并做一些数据科学魔术)。为了运行脚本,我有两个要求:

  • 没有用户登录(root 可能是一个异常(exception),但我还不确定)
  • 硬盘上的 IO 为 0(或几乎为 0)

  • 该脚本可能需要运行数周/数月,以便在任何人登录时不应运行该脚本,因为它不应干扰其他人的工作,并且不应在任何应用程序已在使用硬盘驱动器时运行,以免减慢速度向下。

    我考虑过使用 crontab 每分钟检查是否有任何用户登录并检查硬盘 IO,但我不确定如何处理这个问题,因为当有人登录时需要停止脚本。因为脚本本身也会产生硬盘驱动器上的 IO(因此在检查中它将大于 0)我需要将完整的硬盘驱动器 IO 与脚本产生的 IO 进行比较。

    任何帮助,将不胜感激 :-)

    更新:

    目前我正在考虑连续运行类似的东西:
    if [ -z "$(who)" ]
    then
    # check whether already running
    if [ -z "$ps aux | grep "superAwesomeScript.sh"" ]
    then
    bash superAwesomeScript.sh
    fi
    else
    pkill -f superAwesomeScript.sh
    fi

    缺少 IO 检查,但没有更好的方法吗?

    最佳答案

    我认为您正在寻找的是 service .他们通常在后台连续运行并做他们的事情。您可以在/etc/init.d 中查找脚本以获取示例。

    然后,您将不得不阅读有关您的 ubuntu 版本正在使用的服务系统的信息。即 18.04 使用 systemd
    虽然它们不能解决您的确切问题,但它们最终会让您启动并运行。

    当前登录用户的数量可以用bash查看,比简单的who的anylisis简单一点:

    who -qs | grep -o '[0-9]\+'

    这将返回一个数字,而不是“简单地”整个输出

    关于linux - 无人登录时如何运行维护脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51513930/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com