服务器的算力已经被被人占用了,我如何能“无缝衔接”?
今天遇到一个问题,服务器已经被别人占用了,我又不知道什么时候他能结束,因此很难去训练自己的模型,隔一会去看看别人是否结束又太麻烦,于是便可以写这个脚本文件来自动检测服务器是否空闲,一有空闲就可以自动运行自己的模型文件。
这个文件暂且命名为run_after.sh,内容如下:
而你需要提前做的:
1.获取现在正在运行的进程(也就是别人的进程),这是你需要监控的进程,比如例子中的进程号就是PID=78933 (如何获取呢,通过nvitop命令即可查看)
2. 写一个run_after.sh文件
cat > run_after.sh << 'EOF'
#!/bin/bash# 监控进程ID
PID=78993echo "监控进程 $PID (train_cdsc.py), 等待它结束..."# 循环检查进程是否存在
while ps -p $PID > /dev/null; doecho "进程还在运行,等待30秒..."sleep 30
doneecho "进程已结束!立即启动你的代码..."# 执行你的代码
cd /my_projects
python Cursor_demo.py echo "你的代码已执行完成!"
EOFchmod +x run_after.sh
在此之后,你需要让脚本在后台自己运行(这样你可以退出终端)
nohup ./run_after.sh > run_log.txt 2>&1 &
你可以随时检查脚本的执行情况:
# 查看脚本是否仍在运行
ps aux | grep run_after.sh# 查看日志文件内容
tail -f run_log.txt
当目标进程(PID 78993)完成后,你的脚本会自动开始执行Cursor_demo.py,所有输出都会记录到run_log.txt中。
现在可以安全地退出SSH会话,脚本会继续在后台运行。要检查脚本是否正在运行,尝试:
ps aux | grep run_after
还可以查看nohup输出文件来了解脚本的执行情况:
tail -f run_log.txt
要确认任务是否成功设置为等待执行,可以查看这些命令的输出:
# 查看所有后台任务
jobs# 检查您之前启动的进程ID (31266)
ps aux | grep 31266