关于在ubuntu下使用nohup、定向存储问题以及记录时间总结

1、定向存储问题

        当我们在调程序尤其是在训练神经网络观察其参数的变化时,我们通常喜欢将输出结果存储到线下的文件中,意为打log,但是存储数据又分为存储输入、错误输出以及正常输出3类。

        &1为文件描述符1,并不是我们时常认为的命名为1的文件,切记这个要区分开,2>&1是将输出错误结果与正确结果进行合并,一起保存在文件中,其中0表示键盘输入、1表示屏幕输出、2表示错误输出。2>&1把标准输出与错误输出进行合并;

        command > outfile 即是将command的输出重定向到outfile文件中,即输出不打印在屏幕中,直接输出到outfile中。

        2>被定义为错误重定向,而2>1则是错误输出被定向到一个文件1中,而不是将错误输出定向成标准输出。2>&1被定义为重定向为标准输出;

        在使用命令处理结果时,我们通常把2>&1写在后面,是因为首先要把输出定向到某个文件中,然后2>&1代表着将错误输出定义为标准输出,最后将错误输出与标准输出一起定向到某个文件中。

        对于 command 2>&1 >file来讲,首先将错误输出定义为标准输出,但是,此时输出还是在终端,>file输出才会被从新定向到文件中,但是标准错误仍然在终端。这个有一个先后顺序的表达过程。

2、nohup

        在我们测试程序的时候经常要使用后台运行这样,当我们关闭终端时,不会停止程序。因此,我们常用的命令为:

        nohup python run.py >> out.log 2>&1 &    >>代表着不删除out.log,接着在out.log后面输出,最后的&表示为后台运行

3、记录时间

        目前由于遇到一个问题,就是我要启动程序,但是需要在某个时间段启动程序,并在这个时间段结束后关闭程序,因此我需要准确的时间:hour、minute,second,因此我们使用python里面的datetime这个库函数

datetime日期时间对象,常用的属性:hour、minute、year、day等
date日期对象,常用属性:year、month、day
time时间对象,常用属性:hour、second、minute
datetime日期时间对象,常用的属性:hour、minute、year、day等
timedelta时间间隔对象,即两个时间点之间的长度
tzinfo时区信息对象

        python中的datetime与time类的侧重点不同,time更加倾向于时间戳,即时区时间

        参考时间:https://www.jianshu.com/p/e8951a4aeb71?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

### 如何在 Ubuntu 系统上安装和使用 `nohup` 命令 #### 安装 `nohup` 在大多数 Linux 发行版中,包括 Ubuntu,`nohup` 是作为核心工具的一部分预装的。因此通常情况下不需要单独安装它。如果系统未提供该命令,则可以通过以下方式重新安装 coreutils 软件包来获取: ```bash sudo apt update && sudo apt install -y coreutils ``` 上述命令会更新软件源并安装或修复 coreutils 工具集,其中包含了 `nohup` 命令。 #### 使用 `nohup` `nohup` 的主要功能是让进程忽略挂起信号 (SIGHUP),从而允许其在用户退出终端后继续运行。以下是具体用法及其参数解释: - **基本语法** ```bash nohup command [arguments...] & ``` 这里的 `command` 表示要运行的程序或脚本名称,后面可以跟相应的参数[^4]。 - **重定向输出** 默认情况下,当使用 `nohup` 执行某个命令时,标准输出和错误会被写入到当前工作目录下的名为 `nohup.out` 文件中。如果不希望生成此文件,可以选择将其重定向至其他地方或者丢弃掉这些信息: ```bash nohup java -jar myapp.jar > output.log 2>&1 & ``` 上述例子表示将 Java 应用的标准输出以及错误日志都记录到了 `output.log` 中。 - **验证进程状态** 可以通过查看后台作业列表确认刚刚提交的任务是否成功启动: ```bash jobs -l ``` 或者利用 ps 查找特定关键字对应的 PID 来进一步核实: ```bash ps aux | grep 'myapp' ``` - **终止由 nohup 启动的服务** 如果需要结束之前用 `nohup` 开启的应用实例,先找到它的进程 ID(PID): ```bash pgrep -fl myapp ``` 接着发送 kill 请求给对应的目标: ```bash kill -9 <PID> ``` 注意:以上操作均需具备足够的权限才能顺利完成。 ### 总结 综上所述,在 Ubuntu 平台上运用 `nohup` 实现长时间无人值守任务处理非常简便高效。只需确保目标指令路径无误即可正常调用;而对于更复杂的场景比如 Docker 集成或是切换身份执行等情况也能够灵活应对[^1][^2][^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值