shell任务不受意外中断影响的常见方法

简介:

一、nohup 
    一般的linux 系统都会默认安装,如果没有的话可以通过安装coreutils包来得到nohup命令
    命令格式:nohup Command [ Arg ... ] [ & ] 
    相信大家应该经常用吧,会把命令输出放到nohup.out 这个文件里面,即使ssh窗口断掉了也不会受到影响,可以通过查看nohup.out 文件来查看执行状态。
    缺点:无法用于文本编辑等需要人机交互情况
二、计划任务(cron)
    系统默认安装,默认启动
    这个我就不用再多说什么了,针对很多情况都可以用他,但是用起来比较nohup稍微麻烦一些,不过两者也可以结合来做,比如编辑计划任务的时候命令或者脚本前面加个 nohup也可以
    缺点:仍然无法用于文本编辑等需要人机交互的情况
三、screen
    这个几乎就是目前比较全面的解决方案了,主页http://www.gnu.org/s/screen/
    关于screen的简短介绍(Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells.)
    下面是下载地址:
    http://mirrors.163.com/centos/6.0/os/x86_64/Packages/screen-4.0.3-15.el6.x86_64.rpm (红帽系列的64位服务器可以参考这个)
    http://ftp.gnu.org/gnu/screen/ (源码包下载地址)
    这个算是我用的最多的一种方法了,我在大多数情况下只需要 screen 后面跟命令就可以了,如果遇到各种断的情况时候 重新连接后 输入 screen -ls可以看到我之前的连接 
    如:
    之前我在一个服务器打开了三个窗口,同时screen vim config.h ,执行脚本,查找文件
    第一个窗口    
    [root@test ~/nrpe-2.12/include]
    # screen vim config.h


    然后强制关闭这个窗口
    重新连接这台服务器
    执行下面操作
    [root@test ~]                       
    # screen -ls                        
    There are screens on:               
        2872.pts-3.test    (Attached)        
        2523.aaa    (Detached)              
        2858.pts-5.test    (Attached)        
    3 Sockets in /var/run/screen/S-root.

    
    上面可以看到我有三个连接,(aaa 是我用screen -dmS 来新建的一个session) 如果想恢复的话 使用 screen -r 2872 就可以了,
    执行后回到了我刚才编辑的config.h
   



    
    screen的功能很强大,如果大家想进一步了解他的话可以去这个地址看一下,http://www.ibm.com/developerworks/cn/linux/l-cn-screen/ ,田强老师写的很详细 我就不多说了。这个写的更深入一些:http://www.ibm.com/developerworks/cn/aix/library/au-gnu_screen/
  
    
    

本文出自 “story的天空” 博客


本文转自 wdy198622 51CTO博客,原文链接:http://blog.51cto.com/weimouren/1716384


相关文章
|
6月前
|
Shell Linux
shell 脚本常用于自动化执行文件备份与压缩的任务
shell 脚本常用于自动化执行文件备份与压缩的任务
72 1
|
6月前
|
Shell Linux
6:父子shell-步入Linux的现代方法
6:父子shell-步入Linux的现代方法
69 0
|
6月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
214 0
|
6月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
69 2
|
6月前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
660 3
|
19天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
42 2
6种方法打造出色的Shell脚本
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
52 2
|
4月前
|
Shell Linux
shell 同时执行多任务下载视频
shell 同时执行多任务下载视频
58 4
|
5月前
|
Shell UED Python
Shell 循环语句:重复任务的自动化利器
在Shell脚本中,循环语句如`while`和`for`是自动化任务的关键。`while`循环在条件满足时执行,例如计算1到100的和;`for-in`循环遍历列表,可用于迭代指定数值或命令输出,如求1到100的和。`select-in`循环提供交互式菜单,增强脚本用户体验。理解并运用这些循环能提升脚本效率和可读性。现在,动手试试吧!
54 2
|
6月前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
67 5