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

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

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

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

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

如何使用 script 命令

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

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

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

[alvin@VM_0_16_centos test]$ script
Script started, file is typescript
[alvin@VM_0_16_centos test]$ echo hello
hello
[alvin@VM_0_16_centos test]$ ls
test1.py  test2  test2.cpp  test2.py  test3  test3.c  test.py  typescript  WeixinBot  wxpy  wxRobot
[alvin@VM_0_16_centos test]$ exit
exit
Script done, file is typescript

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

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

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

如何使用 script 与同事协作?

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

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

[alvin@VM_0_16_centos test]$ script cooperate-job
Script started, file is cooperate-job
[alvin@VM_0_16_centos test]$ echo this is alvin_s job
this is alvin_s job
[alvin@VM_0_16_centos test]$ ls
cooperate-job  test1.py  test2  test2.cpp  test2.py  test3  test3.c  test.py  typescript  WeixinBot  wxpy  wxRobot
[alvin@VM_0_16_centos test]$ exit
exit
Script done, file is cooperate-job

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

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

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

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

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

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

vim ~/.bash_profile

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

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

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

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

Last login: Fri Jan 11 15:13:37 2019 from 119.33.28.6
Script started, file is /home/alvin/test/script-file  #提示
[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. 【Prolog - 1.0 基础语法与概念】

    [概述] Prolog的语法与其它常用语言(如C,JAVA等)不同,它更接近于自然语言. [实例] 当我想表示"Mia是以女人"这个事实(之后会提到事实这个概念)的时候,我可以这么 ...

  2. 如何调试 Java 开源项目源码,记一种源码导入开发工具并调试的通用方法

    楔子 说起读开源项目源码,很多朋友觉得高大上.大佬牛逼,云云~ 挡在很多人面前的不是源码怎么读,而是不知道如何导入源码到开发工具以及如何调试源码. 本文将以 spring-cloud-gateway ...

  3. 女娲造人引发思考之Java设计模式:工厂模式

    目录 工厂模式的几种形态 简单工厂模式 示例 结构 优缺点 女娲抟土造人 工厂方法模式 结构 女娲举绳造人 抽象工厂模式 结构 女娲造万物 工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例 ...

  4. 【Azure Developer】使用Java代码启动Azure VM(虚拟机)

    问题描述 在使用Java的启动Azure VM的过程中,遇见了com.azure.core.management.exception.ManagementException: Status code ...

  5. redis实际应用-限流

    为什么要做限流 首先让我们先看一看系统架构设计中,为什么要做"限流". 旅游景点通常都会有最大的接待量,不可能无限制的放游客进入,比如故宫每天只卖八万张票,超过八万的游客,无法买票 ...

  6. 脱壳——UPX脱壳原理(脱壳helloworld)

    脱壳--UPX脱壳原理 脱壳步骤 1 找到OEP 2 dump(导出)内存文件 3 修复 1 找到OEP 1 程序运行先从壳代码运行,壳代码执行完之后会跳转到真正的OEP,也就是是说第一步,首先要找到 ...

  7. python3使用迭代生成器yield减少内存占用

    技术背景 在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中.其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会 ...

  8. 08- Tomcat入门与环境搭建部署

    环境搭建:网站文件(开发人员提供),相关软件(web服务器,应用服务器,数据库软件),硬件(服务器设备上),网络环境. 开发人员提供:部署文档说明书(操作系统版本,硬件配置,服务器软件及相关版本,部署 ...

  9. 软件篇-05-融合ORB_SLAM2和IMU闭环控制SLAM底盘运动轨迹

      前面我们已经得到了当前底盘在世界坐标系中的位姿,这个位姿是通过融合ORB_SLAM2位姿和IMU积分得到的,在当前位姿已知的case下,给SLAM小车设置一个goal,我这里是通过上位机设置,然后 ...

  10. Nginx隐藏式跳转(浏览器URL跳转后保持不变) - 运维笔记

    Nginx的隐藏式跳转可以实现将请求跳转到另一个网站的页面,并且浏览器中URL保持不变.Nginx配置中需要使用rewrite规则.下面提供两个示例来说明这种跳转需求的配置: 一.配置示例1将请求路径 ...