python - 通过 ssh 注销/登录后打开/关闭脚本

标签 python linux bash ssh

<分区>

所以这是你们的问题。有一个 linux 机器有很好的 cpu 和 gpu,我做了一些机器学习的东西(通过 ssh 的 jupyter 笔记本)。我使用这台远程机器进行 24/7 挖矿,所以我需要在登录后立即关闭这 2 个挖矿脚本(用于 cpu 和 gpu),并在我注销后立即再次执行它们。

自动执行此操作的最佳和最简单方法是什么?

最佳答案

假设你在任何给定时间都有一个登录 session ,你的 ~/.bashrc 中的这样的东西可以完成这项工作,

function start_script()
{
    if [ ! -f "${HOME}/pidfile" ]; then
        /path/to/script1 &> /path/to/log2 & # Background running job
        _spid=$!
        echo "$_spid" > "${HOME}/pidfile"  # Write each pid to a file
        /path/to/script2 &> /path/to/log1 &
        _spid=$!
        echo "$_spid" >> "${HOME}/pidfile"
    fi
}
start_script

function stop_script() 
{
    while read -r _pid
    do
        kill "$_pid"  # kill pids while exiting
    done <"${HOME}/pidfile"
    rm -f "${HOME}/pidfile" # Remove the pidfile 
    echo Goodbye;
}
trap stop_script EXIT  # run stop_script when exiting from login session

上面将在您登录时运行 script1script2 ,然后在您注销时终止进程(干净地)。 trap 是这里的关键。除了 EXIT 之外,您还可以向其添加更多信号。

关于python - 通过 ssh 注销/登录后打开/关闭脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48710342/

相关文章:

python - Websocket与高速公路的连接和python中的twisted

python - 使用scikit-learn使用管道时出错

python - 如何提交具有 1 个以上提交按钮的表单。向网站发送 POST。 (Python)

linux - 通过命令行在 Jboss 7.0.1 中部署 war

linux - 从多个文件中删除 C 风格的 block 注释

linux - Cygwin 未检测到 Linux PC 检测到的文件

python - 如何在 QTabWidget 中隐藏选项卡并在按下按钮时显示它

c - 在Linux上执行make命令时如何修复 "make: ' all' is up to date错误?

linux - 更高效的脚本?

bash - 调用名称存储在 bash 变量中的函数