简洁的想法

 找回密码
 注册
搜索
查看: 1749|回复: 1

SSH登录linux妙用后台命令

[复制链接]
发表于 2006-2-2 00:57:44 | 显示全部楼层 |阅读模式
发表于  2004-09-23    作者:esayr   出自 www.phpv.net  

  用SSH管理linux服务器,有时可能要下载点大的软件或者文件包.又或者要打包一个上5G的文件夹,那是多么漫长的等待....

  更麻烦的是,下载的时候如果SSH 客户端N久没动作会断掉连接,于是下载到一半的东西也会跟着死掉.

  当然,你说我可以打开多个SSH客户窗口来操作....,那我不得不说,这是个笨办法.

  比如我想打包一个文件夹,可以用如下的命令

#tar zcvf  file.tar.gz /path/document/*

不想等,就把他放到后台去(后面加个&)

#tar zcvf  file.tar.gz /path/document/* &

如果你要回来.就使用fg 命令

我们想当然的,下载也是这样

#wget http://www.phpv.net/file.tar.gz  &

但如果你超时或者有事离开而退出SSH 那正在下载的file.tar.gz 文件也会随之停下了...

怎么办?让我们用nohup 来完成/

NAME
       nohup - run a command immune to hangups, with output to a non-tty

SYNOPSIS
       nohup COMMAND [ARG]...
       nohup OPTION

DESCRIPTION
       Run COMMAND, ignoring hangup signals.

       --help display this help and exit

       --version
              output version information and exit

REPORTING BUGS
       Report bugs to <bug-coreutils@gnu.org>.

SEE ALSO
       The full documentation for nohup is maintained as a Texinfo manual.  If
       the info and nohup programs are properly installed at  your  site,  the
       command

              info nohup

       should give you access to the complete manual.


以上是man nohup出来的.

用法很简单,就在命令前加 nohup

#nohup wget http://www.phpv.net/file.tar.gz  

nohup: appending output to `nohup.out'


没反映.................................死机了???

CTRL+Z 回到命令行模式...

要避免上面的方法,就加个 & 在命令后面

#nohup wget http://www.phpv.net/file.tar.gz  &

#

好了.现在随便你怎样exit,睡一觉回来看,什么工作都完成了.
 楼主| 发表于 2007-1-4 05:21:31 | 显示全部楼层

用nohup命令让Linux下程序永远在后台执行

转自:http://www.einit.com/user1/11/archives/2006/3603.html
[ 2006-5-13 22:31:54 | By: 牧云 ]
  
  Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

         /usr/local/mysql/bin/mysqld_safe --user=mysql &

 但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:

            nohup /root/start.sh &

          在shell中回车后提示:

           [~]$ appending output to nohup.out

      原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭。

咨询红旗Linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。

在第二遍给我演示时,我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。

这个细节有人和我一样没注意到,所以在这儿记录一下了。


附: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文件中。

  使用 jobs 查看任务。

  使用 fg %n 关闭。

  另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|Archiver|简洁的想法

GMT+1, 2021-4-19 01:37

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表