`

nohup命令 ---- 2016-05-16

阅读更多

一般当我们建立建立了一个启动server的命令文件后,可以通过./startServer.sh来执行它, 但是当你关闭当前dos窗口的时候相应的server也关闭了。如果想要在退出的时候不关闭server这时就需要用nohup的方式执行server的启动文件。

./start.sh

nohup ./start.sh &

nohup ./start.sh> myout.file 2>&1 &

 

./需要执行权限
sh不需要,sh是个软链接,它可能是一个任意的shell,通常默认是bash shell
用type命令可以查看
./执行调用的是你开头一行定义的shell,不指定系统会调用默认shell程序

 

~shell命令中代表用户的家目录。cd 和cd ~都会进入到用户自己的目录。例如:/home/bpmuser

 

附:nohup命令参考

nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

退出状态:该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。

127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

nohup命令及其输出文件

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

该命令的一般形式为:nohup command &

使用nohup命令提交作业

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.file 2>&1 &

 

在上面的例子中,输出被重定向到myout.file文件中。

 

 

实例:

 

Linux nohup后台运行程序

需求:

存储已满,需要删除过时数据

条件:

数据比较大,删除需要很长时间,直接执行删除命令肯定不行,因为窗口一旦关闭,命令就死掉;那么就让它运行也不行,因为这台电脑可能有其他维护公司也会用此电脑,这也不安全。所以需要后台运行该程序

步骤思路:

1:查看需要删除的数据

2:编辑删除脚本

3:后台执行脚本(有多个脚本,每个窗口最好只执行一个)

4:查看运行的后台进程

5: fg %n将后台脚本调到前台执行

6:验证是否在后台执行

7:终止后台运行的删除脚本

 

一. 查看需要删除的数据

[root@NAS dj]# df -h

文件系统              容量  已用 可用 已用% 挂载点

/dev/sda3             192G  5.6G  177G   4% /

/dev/sda1             190M   12M  169M   7% /boot

tmpfs                 3.9G     0  3.9G   0% /dev/shm

/dev/sdb1             9.0T  7.0T  1.6T  82% /var/www/html/dj

/dev/sdb2              11T  9.9T  113G  99% /var/www/html/djbk

需要删除的数据:

/var/www/html/dj/2012

/var/www/html/djbk/2013

二. 编辑删除脚本

 

[root@NAS script]# cat rm_2012.sh

#!/bin/bash

 

rm -rf /var/www/html/dj/2012

 

[root@NAS script]# cat rm_2013.sh

#!/bin/bash

 

rm -rf /var/www/html/djbk/2013

注意:编辑完脚本后需要赋予脚本执行权限

chmod +x rm_2013.sh

三. 后台执行脚本(有多个脚本,每个窗口最好只执行一个)

[root@NAS script]# nohup ./rm_2012.sh  &

[root@NAS script]# nohup ./rm_2013.sh  &

注意:执行脚本的时候,两个脚本不要在同一个窗口执行,

如果在同一个窗口执行,下个执行命令需要等待前面一个执行完成才能执行,

这种效率不是我们要的

四. 查看运行的后台进程

 

jobs   只能查看当前窗口的后台进程,如果关闭了后台执行脚本的窗口,该命令失效,这个时候就只能用到下面的命令查看

ps -ef    可以查看主机所有运行的进程   ps -ef | grep 过滤条件

五. fg %n将后台脚本调到前台执行

 

fg %n  将当前后台运行程序调到前台执行

如果执行完后台脚本命令,当前窗口没有关闭,可以执行jobs查看当前窗口运行的后台进程的进程号,再通过fg %n,将此后台进程调到前台执行,如果不想执行该脚本,直接ctl +c 关闭该窗口

六. 验证是否在后台执行

 

关闭该连接工具后在打开查看,这时候jobs已经不能使用,只能通过以下方式查看后台执行的脚本是否正在执行

[root@NAS script]# ps -ef | grep rm

root      2331    89  0 Nov02 ?        00:00:00 [ib_inform]

root     23792     1  0 09:53 ?        00:00:00 /bin/bash ./rm_2012.sh

root     23793 23792  0 09:53 ?        00:00:23 rm -rf /var/www/html/dj/2012

root     23797     1  0 09:55 ?        00:00:00 /bin/bash ./rm_2013.sh

root     23798 23797  0 09:55 ?        00:00:23 rm -rf /var/www/html/djbk/2013

root     23998 23889  0 10:36 pts/1    00:00:00 grep rm

七. 终止后台运行的删除脚本

 

删除命令:kill -9  进程号

注意:删除的时候不能删除查找命令,否则会造成关机

 

参考网络文件链接:

http://jingyan.baidu.com/article/335530daa4707f19cb41c3ef.html

http://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html

 

分享到:
评论

相关推荐

    rocketmq控制台jar和启动指令

    rocketmq控制台jar和启动指令,用来图形化查看mq队列和消息,启动指令:nohup java -jar rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=192.168.100.62:28881 & 或者 nohup ...

    Linux nohup实现后台运行程序及查看(nohup与&)

    这时就需要借助 nohup 和 & 命令来实现。 nohup java -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -jar test.jar $1 $2 $3 & (1) nohup  加在一个命令的最前面,表示不挂断的运行命令 (2) & 加载一个命令的...

    nohup命令详解.txt

    ### nohup命令详解:确保进程在终端关闭后继续运行 #### 核心知识点解析: **nohup命令概述:** `nohup`是Linux系统中的一个实用工具,其名称源自“No Hang UP”,意为“不断开”。该命令允许用户在终端窗口关闭或...

    java中-jar 与nohup的对比

    是使用 `java -jar` 命令还是使用 `nohup` 命令?这两个命令都可以用来启动 Jar 文件,但是它们之间有着很大的区别。 Java -jar 命令 `java -jar` 命令是 Java 中最基本的命令之一,用于启动 Jar 文件。该命令将 ...

    linux下nohup日志输出过大问题的解决方法

    Linux 是一个功能强大且广泛使用的操作系统,nohup 命令是 Linux 中的一个常用命令,用于在后台运行程序并将输出重定向到文件中。但是在使用 nohup 命令时,经常会遇到日志输出文件过大的问题,导致日志文件变得非常...

    linux nohup及tail-f用法

    **nohup命令详解** `nohup`全称是"no hang up",它的主要作用是使指定的命令在用户退出终端后继续运行。通常,当我们通过终端启动一个进程,一旦终端被关闭,这个进程也会随之终止。然而,通过`nohup`命令,我们...

    nohup使用方法LINUX|CENTOS

    nohup 命令使用方法详解 nohup 命令是一个常用于 Linux 和 CentOS 操作系统中的命令,它可以使得程序在后台运行,不受终端的影响。下面是 nohup 命令的使用方法和参数解释: nohup 命令的基本语法 nohup 命令的...

    redis和java整合运动的jar包--免费

    4. 使用Jedis API:通过Jedis实例执行各种Redis命令,如`set`、`get`、`lpush`、`hset`等。 5. 关闭连接池:在应用程序结束或不再需要使用Redis时,关闭JedisPool以释放所有资源。 6. 错误处理:处理可能出现的...

    Linux 运行jar包的几种方式

    第三,`nohup`命令常用于确保程序在用户断开SSH连接后仍能持续运行。例如,`nohup java -jar xxx.jar &`。此时,程序的输出会被重定向到`nohup.out`文件,除非另有指定。如果希望将输出重定向到特定文件,如`aaa.log...

    详解linux下nohup日志输出过大问题解决方案

    1、nohup命令解释:  a、语法:nohup [command] [args] [&]  b、说明:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台...

    java控制台输入cmd命令, ssh远程linux shell命令, 并打印命令输出到控制台

    在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...

    Linux-nohup日志拆分

    在Linux环境下,我们经常会使用`nohup`命令来运行一些长时间运行的任务,这些任务会将输出重定向到`nohup.out`文件中。随着运行时间的增长,这个文件可能会变得非常大,不仅占用大量磁盘空间,还可能影响系统的性能...

    Linux nohup命令原理及实例解析

    Linux中的`nohup`命令是系统管理员和开发者在日常工作中经常会用到的一个工具,它允许用户在退出终端或者注销系统后,仍然让一个程序在后台持续运行。这个命令非常实用,尤其对于那些需要长时间运行的服务或者脚本,...

    rocketmq-console后台管理jar包

    解压压缩包后,你可以通过Java的JAR命令来运行RocketMQ Console。使用如下命令: ``` java -jar app.jar ``` 这将启动Console的服务,你可以通过浏览器访问指定的端口(默认是8080)来查看和管理RocketMQ集群。...

    nohup命令 后端运行程序

    nohup命令的全称为“no hang up”,该命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件...

    解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题

    1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy...

    linux上通过sh方式启动java jar程序并做为守护进程

    # 启动Java应用,使用nohup命令防止被挂断信号中断,&符号使其在后台运行 nohup java -jar $JAR_FILE_PATH --main-class $MAIN_CLASS & # 输出进程ID到日志文件 echo $! > /path/to/logfile.pid # 如果你想在启动...

Global site tag (gtag.js) - Google Analytics