Linux Shell的 & 、&& 、 ||
来源:互联网 发布:php微信创建菜单 编辑:程序博客网 时间:2024/06/04 23:19
& 放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把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
- 如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端的进程。
&&
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。
有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
语法格式如下:
command1 && command2 [&& command3 ...]
command1 || command2 [|| command3 ...]
--------------------------------------------------------------------------------------------------
例子:ping -W 1 -c 1 192.168.1.123 &>/dev/null && echo "is up" | tee -a uplog || echo "is down"
- Linux的shell编程
- Linux的shell编程
- Linux的shell基础
- Linux的shell编程
- Linux的shell编程
- Linux的shell编程
- Linux的shell编程
- Linux的shell编程
- Linux的Shell编程
- Linux的shell编程
- Linux的Shell编程
- linux的shell代码
- Linux的shell变量
- Linux的shell编程
- Linux的shell编程
- linux shell的资料
- Linux 的shell编程
- 初识linux的shell
- 【Dongle】【Java】规范之EJB
- jstl表达式分页 Mvc后台
- Mysql: Lock wait timeout exceeded; try restarting transaction异常处理
- work record 1
- 算法提高 夺宝奇兵
- Linux Shell的 & 、&& 、 ||
- YOLO install
- RN1_React Native准备热身(react native 学习)
- windows系统下git的安装
- OKHTTP
- spark core 2.0 LongArray
- BZOJ1027: [JSOI2007]合金
- man使用手册
- Swagger配置手记