Linux系统如何在进程运行结束时自动记录时间戳
Linux后台运行长耗时程序并记录结束时间实现方案
最简无依赖方案(无需安装任何软件,适合入门用户)
直接替换你原本的执行命令为以下内容即可:nohup bash -c 'echo "=== 程序启动时间: $(date) ===" >> myres.res; sudo profile/profile 2g myprof.msys >> myres.res; echo "=== 程序结束时间: $(date) ===" >> myres.res' &注意事项:
nohup可以保证你关闭终端、断开SSH连接后,程序不会被系统自动终止- 命令执行前后分别会把启动、结束的系统时间追加写入你的结果文件
myres.res,第二天直接查看该文件末尾就能拿到准确的进程结束时间 - 末尾的
&会把整个任务放到后台运行,执行完命令你就可以直接关闭终端离开 - 执行上述命令前先单独运行一次
sudo -v输入密码缓存sudo权限,避免后台运行时因为需要验证密码卡住中断
增强版方案(可捕获异常退出场景)
如果你需要区分程序是正常跑完还是中途崩溃退出,可以用下面的命令,时间日志单独存在run.log文件里,无论程序以什么状态退出都会记录对应的时间和退出码:nohup bash -c ' echo "=== 程序启动时间: $(date) ===" >> run.log trap "echo \"=== 程序退出时间: $(date), 退出码: $? ===" >> run.log" EXIT sudo profile/profile 2g myprof.msys >> myres.res ' &敲完命令后终端会返回一串数字,这是后台任务的进程ID,你可以记下来,中途如果想确认程序是否还在运行,执行
ps aux | grep 你记下的进程ID就能查到运行状态。
内容的提问来源于stack exchange,提问作者MartianEngineer
相关产品推荐
相关产品推荐

