linux运行命令后台的区别

linux shell中经常会使用后台运行某个脚本

那么,下面的几种区别在哪呢

commandcommand > /dev/nullcommand > /dev/null 2>&1command &command &> /dev/nullnohup command &> /dev/null

下面分别简单地谈一下

# 以test.sh为例[[email protected] ~]# cat test.sh #!/bin/bash#while [  ‘1’ == ‘1’ ] ;do
	echo `date "+%Y-%m-%d %H:%M:%S"` 
	sleep 100done
command

直接执行,命令输出会显示在终端界面上,ctrl-C会终止命令的运行

[[email protected] ~]# bash test.sh 2016-08-07 20:49:47^C
[[email protected] ~]#
command > /dev/null

直接执行,命令标准输出会定向到null设备,即忽略标准输出1,但错误输出2会显示, 其实这等同于command 1 > /dev/null

[[email protected] ~]# cat test.sh#!/bin/bash#while [  ‘1’ == ‘1’ ] ;do
	echo `date "+%Y-%m-%d %H:%M:%S"` 
	ll
	sleep 100done[[email protected] ~]# bash test.sh > /dev/nulltest.sh: line 5: ll: command not found
^C
command > /dev/null 2>&1

这里首先和上面命令一样会把1输出到null设备,2重定向到1,那么2也会导null设备, 所以所有输出均送到了null设备

command &

这个想必大家都用过,后台执行,然而当我们退出终端后,command就会终止 这是因为我们的终端相当于一个父进程 ,一旦父进程退出,就会给其所有子进程发送hangup信号,子进程收到就会退出。 这里我不再举例子 如果我们在头加上nohup,也就是使用nohup command &,那么父进程就不会发送hangup给这个子进程,从而会一直在后台运行

command &> /dev/null 和 command > /dev/null 2>&1区别

网上并没有说多大区别,这是谈到ksh对于后者兼容更好,也就是满足了需求,所以推荐后者,当然如果确定当前平台,使用前者似乎更方便少,打了4个字符

后台控制
# 后台的命令可以通过jobs查看[[email protected] ~]# jobs[1]-  Running                 bash test.sh &
[2]+  Running                 bash test1.sh &# 调到前后台可以通过bg %JOB_NUMBER fg %JOB_NUMBER来完成,比如把job 1调到前台[[email protected] ~]# fg %1bash test.sh# 命令行就会一直持续这样,ctrl-Z可以让其停止运行在后台[[email protected] ~]# fg %1bash test.sh
^Z
[1]+  Stopped                 bash test.sh# 如何让其后台运行,因为现在状态为stopped,bg %1,你会发现bg 1也行[[email protected] ~]# bg 1[1]+ bash test.sh &
[[email protected] ~]# jobs[1]-  Running                 bash test.sh &
[2]+  Running                 bash test1.sh &
时间: 2024-10-11 03:05:51

linux运行命令后台的区别的相关文章

Linux 运行命令 提示 bash command not found

这是系统path路径设置错误的问题,path没有设置对 系统就无法找到命令 1.运行:export PATH=/usr/bin:/usr/sbin:/bin:/sbin (执行完先不要关闭终端,这样保证命令行暂时可使用) 2.打开  vim /etc/profile 查看配置是否正确 我的是JDK的路径配置错了 找到问题后 :wq source profile 即可解决! 原文地址:https://www.cnblogs.com/qinxu/p/11202331.html

Linux常用命令知识积累

基本操作 Linux关机,重启 # 关机 shutdown -h now # 重启 shutdown -r now 查看系统,CPU信息 # 查看系统内核信息 uname -a # 查看系统内核版本 cat /proc/version # 查看当前用户环境变量 env cat /proc/cpuinfo # 查看有几个逻辑cpu, 包括cpu型号 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看有几颗cpu,每颗分别是几核 ca

Linux实战案例(8)后台运行命令 nohup command > myout.file 2>&1

Linux命令后台运行 转自北国的雨,谢谢:http://www.cnblogs.com/lwm-1988/archive/2011/08/20/2147299.html 有两种方式:1. command & : 后台运行,你关掉终端会停止运行2. nohup command & : 后台运行,你关掉终端也会继续运行 一. 简介 Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务.因此在任务管理上也有别具特色的管理思想.在 Windows 上面,我们要么让一个程序作为服

linux命令后台运行

1.在下达的命令后面加上&,就可以使该命令在后台进行工作,这样做最大的好处就是不怕被ctrl+c这个中断指令所中断. 2. 那大家可能又要问了,在后台执行的程序怎么使它恢复到前台来运行呢?很简单,只用执行fg这个命令,就可以了. 3.可能有些同学又要问了,我现在已经在前台运行的命令,我能把它放到后台去运行么?当然可以了,只要执行ctrl+z就可以做到了.是不是很赞啊! 4.说到这里可能有些同学又要问了,如果我有多个进程在后台运行,那如何恢复到前台来执行呢?这时候就要用到jobs这个命令了,通过j

linux后台运行命令

来源:http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题. nohup/setsid/& 场景: 如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证

nobup 与 后台运行命令

1. Linux进程状态:R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态) 2. Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态, 可处理signal 3. Linux进程状态:D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态, 可处理signal, 有延迟 4. Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态, 不可处理signal, 因为根

断开ssh链接在后台继续运行命令

转载:http://blog.csdn.net/v1v1wang/article/details/6855552 对于linux运维,我们都是使用ssh登录到服务器,如果我们运行的任务需要很长时间或不间断运行,在我们直接关闭终端窗口或网络不稳定的情况下,任务就会中断,当然这只对于普通程序,不包括如mysqld,httpd这样的守护进程.原因分析: [[email protected] ~]# ping 51osos.com > /dev/null & [1] 13678 [[email pr

用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别

原文:http://blog.sina.com.cn/s/blog_6b94d5680100nd48.html 文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地址 入口地址 等 ///////

nohup 后台运行命令

在Linux上部署zipkin,在SSH客户端执行java -jar zipkin-server-1.21.0-exec.jar,启动成功,在关闭SSH客户端后,运行的程序也同时终止了,怎样才能保证在推出SSH客户端后程序能一直执行呢?通过网上查找资料,发现需要使用nohup命令. 完美解决方案:nohup java -jar zipkin-server-1.21.0-exec.jar >output 2>&1 & 现对上面的命令进行下解释 用途:不挂断地运行命令.语法:noh