科学网

 找回密码
  注册

tag 标签: nohup

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

linux 程序后台运行
yujianshengucas 2016-8-23 10:40
Unix/Linux下一般想让某个程序在后台运行,使用 在程序结尾来让程序自动运行, 为了能够后台运行,我们需要使用nohup这个命令,比如我们有个my.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup: nohup ./my .sh 当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端,否则程序会中断 nohup 命令   用途:不挂断地运行命令。   语法:nohup Command   描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 ( 表示and的符号)到命令的尾部。 nohup ./all_Batch .sh 2011 001 365 CMA 批处理2011年,年积日001到365的数据,CMA项目下 jobs 只能查看当前窗口的后台进程,如果关闭了后台执行脚本的窗口,该命令失效, ps -ef 可以查看主机所有运行的进程 ps -ef | grep 过滤条件 参考: http://blog.chinaunix.net/uid-11278770-id-2939008.html http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
个人分类: 小结|2430 次阅读|0 个评论
[转载]shell的基本认识和重要功能
hxx800 2011-2-18 20:30
Shell就像一个壳层,这个壳层介于用户和操作系统之间,负责将用户的命令解释为操作系统可以接收的低级语言,并将操作系统响应的信息以用户可以了解的方式来显示。 从用户登陆到注销期间,用户输入的每个命令都会经过解译及执行,其负责机制就是shell。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。 有一些命令,如改变工作目录命令cd,是shell内置命令。还有一些命令,例如拷贝命令cp和移动命令mv,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。 #find / -name cd #find / -name cp shell的主要版式本 在Linux系统中常见的shell版本有以下几种。 (1)Bourneshell(sh):它是UNIX最初使用的shell,并且在每种UNIX都可以使用。它在shell编程方面相当优秀,但处理与用户的交互方面不如其他几种shell。 (2)Cshell(csh):它最初由BillJoy编写,它更多地考虑了用户界面的友好性,支持如命令补齐等一些Bourneshell所不支持的特 性,但其编程接口做得不如Bourneshell。Cshell被很多C程序员使用,因为Cshell的语法和C语言的很相似,Cshell也由此得名。 (3)Kornshell(ksh):它集合了Cshell和Bourneshell的优点,并且和Bourneshell完全兼容。 (4)BourneAgainshell(bash):bash是大多数Linux系统的默认shell。它是Bourneshell的扩展,并与Bourneshell完全向后兼容,而且在Bourneshell的基础上增加和增强了很多特性。。 (5)tcsh:它是Cshell的一个扩展版本,与csh完全向后兼容,但它包含了更多使用户感觉方便的新特性,其最大的提高是在命令行编辑和历史浏览方面。它不仅和Bashshell提示符兼容,而且还提供比Bashshell更多的提示符参数。 (6)pdksh:它是一个专门为Linux系统编写的Kornshell(ksh)的扩展版本。Ksh是一个商用shell,不能免费提供,而pdksh是免费的。 Linux中的各种shell shell 名称描述 位置 ash 一个小shell(和sh类似) /bin/ash ash.static 一个不依靠软件库的ash版本 /bin/ash.static bash BourneAgainShell /bin/bush bush2 BourneAgainShell的新版本 /bin/bush2 bsh ash的一个符号链接 /bin/bsh csh Cshell,tcsh的一个符号链接 /bin/ash ksh 公共域受限制的shell(针对网络操作) /usr/bin/rsh sh bash的一个符号链接 /bin/sh tcsh 和csh兼容的shell /bin/tcsh zsh 一个和csh,ksh和sh兼容的shell /bin/zsh 判断登入shell 使用echo命令来查询系统的“SHELL”环境变量,命令如下: #echo $SHELL 暂时变更shell 除非是在受限的shell中,否则若要变更使用shell,只要执行该Shell程序名称(shell_name),即可切换到不同的Shell。如: #sh(或#csh等等) 此处的shell_name是指shell的名称(例如,sh或csh)。暂时变更shell,可在其它的shell中进行试验。 键入exit或CTRL-D可以回到您原始的shell中。 永久性地变更shell 若要永久变更登入shell(登入时的预设shell),请使用“chsh”(changeshell)命令 #chsh username full_shell_name 此处的username即为使用者名称,而shell_path_name是欲作为预设之shell的完整路径名称(如/usr/bin/sh)。 使用chsh命令之后,您必须再次注销和登入,变更才会生效。 例,如果terry将预设的登入shell改为Cshell,该命令的形式如下: $chsh terry /usr/bin/csh % Shell功能介绍 交互式处理(Interactive Processing) 接收来自用户输入的命令后,shell 会根据命令类型的不同来执行,执行完毕后,shell 会将结果回传给用户,并等待用户下一次输入。用户执行exit 或是按 Ctrl+D 来注销 shell 才会结束。 命令补全功能 指用户输入命令后,有时不需输入完整的命令,而系统会自动找出最符合的命令名称,这种功能可以节省输入长串命令的时间。 不需要输入完整的文件名,只需输入开头几个字母,然后按Tab键时候,系统会补充完整,连续按两次Tab(Esc)键系统会显示所有符合输入前缀的文件名称。 若忘了命令的全名,而只记得命令的开头字母,按Tab键一次会补充完整,连续按两次Tab(Esc)键系统会显示所有符合输入前缀的命令名称。 别名(Alias)功能 查询目前系统所有别名:#alias 设置别名:#alias dir=‘ls-l’ 使用别名:#dir /etc 取消别名: #unalias dir alias命令的效力仅限于该次登录,在注销系统后,这个别名的定义就会消失。如果希望每次登陆都使用这些别名,则应该将别名的设置加入“~/.bashrc”文件中,若是写入“/etc/bashrc”文件中,则系统上的所有用户都能使用这个别名。 查阅历史记录-history命令 在Linux系统上输入命令并按下Enter后,这个命令就会存放在命令记录表 ( ~/.bash_history )中,预定的记录为1000笔,这些都定义在环境变量中。 列出所有的历史记录:#history 只列出最近5笔记录犯例:#history5 使用命令记录号码执行命令:#!561 重复执行上一个命令:#!! 执行最后一次以ls开头的命令:#!ls 后台处理(BackgroundProcessing) 通常将比较耗时的工作放在后台执行。要执行后台程序,只要在输入命令时,在命令的后面加上“”符号,之后按Enter键,系统即会开始以后台的方式执行该命令。 若目前已在执行某个命令,无法使用“”来将它加入后台中执行,需先按Ctrl+z键暂停这程序的执行,然后再直接输入“bg”命令,就可将此工作放入后台执行。 “nohup”指NoHangUp的意思,即注销后系统会继续执行该命令。 #nohup ping 192.168.11.1 查看后台执行的程序:#jobs http://hi.baidu.com/cn_linux/blog/item/633447364b5756dca2cc2b53.html
个人分类: 电脑应用|3428 次阅读|0 个评论
不要让你的程序挂起
guodanhuai 2009-9-22 14:35
在Linux中,ssh客户端启动geoserver,当退出ssh后,geoserver进程退出停止了,这是为什么呢? 我们在启动geoserver后,用查看进程的命令查看geoserver进程 ps -ef 的可以看到: geoserver进程的父进程(PPID)为12505,这个进程的副进程又属于12292,在上图中,实际上是该客户端启动了三个ssh窗口。所以当客户端的所有ssh窗口退出后,geoserver的进程也被终止。 要解决此问题,就需要将你的应用程序在后台运行,可以用nohup命令 和 ,nohup命令的原意应该是no hang up: 在Unix/Linux下一般比如想让某个程序在后台运行,一般可以使用在程序的结尾加上来让程序自动运行。但是并不是所有的程序都做成了守护进程,这样,如果终端被关闭,程序也会被关闭。为了能够后台运行,可以使用nohup命令 nohup命令的语法: nohup Command nohup运行有Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGUP)信号,在注销后使用nohup命令运行后台中的程序。要运行后台中的nohup命令,添加到命令的尾部。 无论是否将nohup命令的输出重定向到终端,输出都将附加到当前目录的nohup.out文件中。若当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么Command参数指定的命令不可调用。 在本例中,运行了 nohup ./startup.sh 后,12280进程的父进程为1,即init进程,这样在你关闭终端后,你的geoserver仍然在后台运行。 PS:Linux的可控制性确实很好,但如果你没有掌握它,使用起来还挺麻烦,现在我是越来越喜欢上它了。
个人分类: Linux|5197 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-25 18:40

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部