Linux Shell的 & 、&& 、 ||
- 发表于 3年前
- 阅读 18472
- 收藏 20
- 点赞 4
- 评论 0
& 放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。
如:
tianfang > run &
[1] 11319
tianfang >
进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319。切换到后台的进程,仍然可以用ps命令查看。
前后台间切换
可以通过bg <jobid>(background)和fg<jobid>(foreground)命令将其在前后台间状态切换。
守护进程
如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程。守护进程值得是系统长期运行的后台进程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。
tianfang > ps xj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
953 1190 1190 1190 ? -1 Ss 1000 0:00 /bin/sh /usr/bin/startkde
1 1490 1482 1482 ? -1 Sl 1000 0:00 /usr/bin/VBoxClient –seamless
1 1491 1477 1477 ? -1 Sl 1000 0:00 /usr/bin/VBoxClient –display
创建守护进程最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader。成功调用该函数的结果是:
- 创建一个新的Session,当前进程成为Session Leader,当前进程的id就是Session的id
- 创建一个新的进程组,当前进程成为进程组的Leader,当前进程的id就是进程组的id
- 如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端的进程。
更多请参考:http://www.cnblogs.com/TianFang/archive/2013/01/23/2872645.html
&&
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。
有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
语法格式如下:
command1 && command2 [&& command3 ...]
command1 || command2 [|| command3 ...]
--------------------------------------------------------------------------------------------------
相关推荐:
Java中&与&&的区别
java中,&连接两个数字的时候,它是表示两个位的按位与;而&&表示两个条件的逻辑与运算,兼有短路的功能。但是 & 如果连接2个条件是,都会执行。
--》要点:先说最明显的不同点,再说相同点。
- 分类:Linux-Hadoop
- 字数:1001
Linux Shell的 & 、&& 、 ||的更多相关文章
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 流程控制语句
* 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...
- Linux Shell 截取字符串
Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- Linux Shell 通配符、元字符、转义符【转帖】
作者:程默 说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt ...
- Linux Shell中单引号、双引号、反引号的区别【转载】
linux shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符` 1. 单引号 ( '' )# grep Susan phonebook Sus ...
- 【shell 大系】Linux Shell常用技巧
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
随机推荐
- 关于emoji表情
/** /* 表情编码 /* @param emoji:表情符号 **/ encodeEmoji: function (content) { var imgHtml = ""; v ...
- Markdown学习(一)
先从了解开始. 1 什么是标记语言(Markup Language)? 可以参考下wiki Markup language:https://en.wikipedia.org/wiki/Markup_l ...
- 2. 知识图谱-命名实体识别(NER)详解
1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 在解了知识图谱的全貌之后,我们现在慢慢的开始深入的学习知识 ...
- tomcat7.0 windows部署使用80端口问题
如果安装有.net的IDE,那么80端口容易被IIS内的站点占用,如果不是则手动查找. 1:在命令行中输入netstat -ano,得到端口号对应的PID pid这么来显示
- Java Web项目部署时 “Exploded Archive”模式部署时无效
在myeclipse中部署项目时,当Deploy type为Exploded Archive(deveplopment mode)时,finish按钮为灰色,无法部署的解决方法: 1.project上 ...
- 基于jQuery Tooltips悬停提示效果
基于jQuery Tooltips悬停提示效果.这是一款基于jquery.tooltipster插件实现的jQuery Tooltips Hover effect特效.效果图如下: 在线预览 源码 ...
- 基于jQuery+CSS3实现人物跳动特效
分享一款基于jQuery+CSS3实现人物跳动特效.这是一款类似gif图片效果的CSS3动画特效代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=& ...
- bootstrapTable刷新当前页码不变和从第一页开始查询
function searchAgencyProject(){ $("#statisticalProjectListTable").bootstrapTable('refresh' ...
- c# 16进制转int
//十进制转二进制Convert.ToString(69, 2); //69为被转值//十进制转八进制Convert.ToString(69, 8); //69为被转值//十进制转十六进制Conver ...
- C#7.0新语法
一.out输出参数 在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如: 先定义一个方法,方法参数是out类型的输出参数: private void DoNoting(out int ...
