Linux命令nohup实现命令后台运行并输出到或记录到日志文件

导读 我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析。如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好。但是如果做一些压力测试,产生大量 log ,而且系统内存又比较小(比如嵌入式设备),那要怎么处理呢?当然,secureCRT 和 mobaXterm 都有将日志保存到本地的功能,使用起来也是很方便。但是有些工具,比如 putty,就没这样的功能了。这时终端里的记录器—— script 就派上用场了。
使用场景

1、调试会产生大量 log 的应用程序,并且需要保存到本地进行进一步分析;

2、与同事协同工作,自己将工作完成了一半,可以将操作过程记录下来,发给同事,同事可以根据记录接着工作;

3、让人远程协助你,担心对方使坏,同时也可以留下案底,最好将他的操作记录下来

如何使用 script 命令

默认情况下,直接输入 script 这个命令即可,它会在当前目录自动创建一个 typescript 文件,之后你在此终端的所有操作都会被记录在这个文件里。

记录文件是一个文本文件,可以使用任意的文本工具打开查看。

如果要退出记录,可以在终端里按快捷键 ctrl + D 或直接输入 exit 。在退出 script 前,你会发现,记录文件大小为 0 Kb,当退出后,文件大小会变大。

  1. [alvin@VM_0_16_centos test]$ script
  2. Script started, file is typescript
  3. [alvin@VM_0_16_centos test]$ echo hello
  4. hello
  5. [alvin@VM_0_16_centos test]$ ls
  6. test1.py  test2  test2.cpp  test2.py  test3  test3.c  test.py  typescript  WeixinBot  wxpy  wxRobot
  7. [alvin@VM_0_16_centos test]exit
  8. exit
  9. Script done, file is typescript

如果我们想要自己起个文件名,或者将文件放在其它位置,那么我们可以直接在 script 后面跟上文件名即可。

  1. [alvin@VM_0_16_centos test]$ script ~/alvin-script
  2. Script started, file is /home/alvin/alvin-script
  3. [alvin@VM_0_16_centos test]$ ll
  4. total 64
  5. -rw-rw-r--  1 alvin alvin    21 Nov 10 09:40 test1.py
  6. -rwxrwxr-x  1 alvin alvin 14074 Dec 31 07:35 test2
  7. -rw-rw-r--  1 alvin alvin   403 Dec 31 07:35 test2.cpp
  8. -rw-rw-r--  1 alvin alvin  2093 Nov 10 10:50 test2.py
  9. -rwxrwxr-x  1 alvin alvin  8553 Jan  7 20:03 test3
  10. -rw-rw-r--  1 alvin alvin    78 Jan  7 20:03 test3.c
  11. -rw-rw-r--  1 alvin alvin    94 Nov  9 23:25 test.py
  12. -rw-rw-r--  1 alvin alvin   489 Jan 11 12:07 typescript
  13. drwxrwxr-x  6 alvin alvin  4096 Nov 10 11:19 WeixinBot
  14. drwxrwxr-x  6 alvin alvin  4096 Nov 10 11:30 wxpy
  15. drwxrwxr-11 alvin alvin  4096 Nov 10 11:34 wxRobot
  16. [alvin@VM_0_16_centos test]$ echo hello
  17. hello
  18. [alvin@VM_0_16_centos test]exit
  19. exit
  20. Script done, file is /home/alvin/alvin-script

学会这两个基本操作,可以应付很多场景下需要记录终端的场景。

如何使用 script 与同事协作?

现在有一项工作,需要与同事一起协作,我完成一半,他完成另一半。

首先,我来做我的工作,用 script 记录一下我的工作过程:

  1. [alvin@VM_0_16_centos test]$ script cooperate-job
  2. Script started, file is cooperate-job
  3. [alvin@VM_0_16_centos test]$ echo this is alvin_s job
  4. this is alvin_s job
  5. [alvin@VM_0_16_centos test]$ ls
  6. cooperate-job  test1.py  test2  test2.cpp  test2.py  test3  test3.c  test.py  typescript  WeixinBot  wxpy  wxRobot
  7. [alvin@VM_0_16_centos test]exit
  8. exit
  9. Script done, file is cooperate-job

工作完成之后,将记录文件发给同事,他可以使用文本工具打开,就可以知道你的进度了,然后接着你的进度干活。

如果他要接着在你的记录文件里记录他的操作的话,可以加一个 -a 选项,即 append 的缩写。

  1. [alvin@VM_0_16_centos test]$ script -a cooperate-job
  2. Script started, file is cooperate-job
  3. [alvin@VM_0_16_centos test]$ echo this is harry_s job
  4. this is harry_s job
  5. [alvin@VM_0_16_centos test]$ pwd
  6. /home/alvin/test
  7. [alvin@VM_0_16_centos test]exit
  8. exit
  9. Script done, file is cooperate-job
请他人远程协助时,如何记录他的操作过程?

让他人登陆到自己的电脑,如果是熟人还好,是陌生人的话心里多少会有些不踏实。为了放心一下,我们还是偷偷记录一下他的所作所为吧。

我们可以将 script 命令添加到 Shell 配置文件中,用户一旦登录进来,script 命令就自动启动,并记录操作者的所有操作过程。

实现这个目的,我们可以修改 .bash_profile 文件。

  1. vim ~/.bash_profile

在最后一行,我们将 script 命令添加进去:

  1. /usr/bin/script -qa your_path #补齐自己的路径

然后保存,使用 source 或 . 命令使它生效。下次其它人登录到系统时,script 就会自动运行,并将记录文件保存在你所指定的位置。

在这里,-q 选项代表静默记录,对方将不知道你在后台记录。如果不使用这个选项,则他会收到这个提示:

  1. Last login: Fri Jan 11 15:13:37 2019 from 119.33.28.6
  2. Script started, file is /home/alvin/test/script-file  #提示
  3. [alvin@VM_0_16_centos ~]$

原文来自:https://mp.weixin.qq.com/s/bggslMQr7sHGgcHTgX4KCA

本文地址:https://www.linuxprobe.com/terminal-recording-artifact.html编辑:public,审核员:逄增宝

Linux命令大全:https://www.linuxcool.com/

Linux命令nohup实现命令后台运行并输出到或记录到日志文件的更多相关文章

  1. Linux下使Shell 命令脱离终端在后台运行

    --Linux下使Shell 命令脱离终端在后台运行------------------------------------2014/02/14你是否遇到过这样的情况:从终端软件登录远程的Linux主 ...

  2. linux 命令行远程登录 后台运行命令的方法

    linux 命令行远程登录 后台运行命令的方法 http://blog.csdn.net/isuker/article/details/55061595 Linux 技巧:让进程在后台可靠运行的几种方 ...

  3. linux进程后台运行及输出重定向

    本机环境为ubuntu 14.04 以ping www.baidu.com为例: 1.程序的前台运行 ping www.baidu.com 可以看到,屏幕上输出了baidu返回的结果 2.实现程序后台 ...

  4. Linux下 SpringBoot jar项目后台运行、查看、停用

    运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...

  5. Linux如何让进程在后台运行的三种方法详解

    问题分析: 我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程.因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运 ...

  6. linux nohup命令使程序在后台运行的方法

    在linux操作系统中从后台一直运行某个程序的方法,就是使用nohup命令了. Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行. 比如要运行 ...

  7. (nohup+开启fitnesse的命令+&)让fitnesse在linux可脱离终端在后台运行

    1.脱离终端后台运行fitnesse 用终端连接linux时,开启fitnesse命令后,界面是这样的. 如果此时终端关闭或是不小心按了ctrl+c,fitnesse就被关闭,页面就无法访问了 为了解 ...

  8. linux的nohup命令的用法(后台运行程序命令)

    linux的nohup命令的用法. 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/ ...

  9. (转)Linux下使Shell 命令脱离终端在后台运行

    转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...

随机推荐

  1. PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642 题目描述: "单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大 ...

  2. 高精度加法(c++)

    为什么要用高精度? 有时我们要进行精度较高的运算时,就要使用高精度来进行运算: 就如例题: 大整数加法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 21965 通过数: 634 ...

  3. 2019年度CMMI V2.0性能报告

    2020年底,CMMI研究院发布<2019 CMMI V2.0 Performance Report Summary>,渠成团队进行了全文翻译并简单总结如下.(文末提供中英双版PDF下载) ...

  4. 软工个人阅读作业2 —— 构建之法与CI/CD

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 阅读思考教材,调研软工工具 这个作业在哪个具体方面帮助我实 ...

  5. Druid 监控分布式解决方案

    什么是 Druid Monitor Druid 是一个非常强大的数据库连接池,但是它的强大并不仅仅体现在作为一个高性能连接池加快数据访问上和连接管理上,它内置了一个强大的监控工具:Druid Moni ...

  6. Spring Security OAuth2 实现登录互踢

    背景说明 一个账号只能一处登录,类似的业务需求在现有后管类系统是非常常见的. 但在原有的 spring security oauth2 令牌方法流程(所谓的登录)无法满足类似的需求. 我们先来看 To ...

  7. Ubuntu所有版本下载及更新源

    官网:https://www.ubuntu.com/download/desktop没找到历史版本,且下载速度很慢在网易镜像站下载ubuntu:网址:http://mirrors.163.com/ub ...

  8. 12.Quick QML-QML 布局(Row、Column、Grid、Flow和嵌套布局) 、Repeater对象

    1.Row布局 Row中的item可以不需要使用anchors布局,就能通过行的形式进行布局. 并且item可以使用Positioner附加属性来访问有关其在Row中的位置及其他信息. 示例如下所示, ...

  9. zabbix容器化安装及监控docker应用

    一.zabbix agent2 介绍 从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监 ...

  10. 034- do_while语句

    语法 初始化语句; do { 循环体语句; 控制条件语句; }while(boolean表达式); 执行过程: 首先会执行do循环体中的语句,然后运算while中的boolean表达式,如果是true ...