前言
又一次拉肚子,真的很疼,不过又犯错误了,我真的是神烦,屁事怎么这么多。希望她还能原谅我。我怎么可以这样。什么都帮不了她,又不听话,还倔,有什么资格发脾气。但是真的不要乱想,我还是那个我,我还是只爱你。以后不再会了。一个人在寝室,她肯定很害怕,要去哄一下我们家的仙女宝宝。真的想把自己打一顿。
前段时间在忙考科二,不过还是命好,一把过。再加上要处理排练节目的事情,有蛮多笔记没有整理了。这里开一篇来整理一下Linux的一些面试问题,为今后的面试打个基础。不过最近压力好大,真的希望自己可以做梦都在学习。不过老是到1点又犯困,还是要慢慢调整一下,找回学习劲头。
请问 $?、 $$、 $#、 $* ?
- $? 表示上一条命令的返回值
- $$ 代表当前bash的pid号
- $# 表示位置变量的个数
- $* 所有的位置变量的内容
Linux 括号的使用
数值的比较或计算用双圆括号
字符串的判断使用双中括号
{}变量隔离
[root@routerA_Cpb ~]# sg="123"
[root@routerA_Cpb ~]# echo $sg
123
[root@routerA_Cpb ~]# echo $sg1
[root@routerA_Cpb ~]# echo ${sg}1
1231
shell脚本执行一段代码程序,终止shell脚本后会让程序停止吗?如何让程序继续运行?
父进程被杀死子进程也会被杀死,所以程序会停止
方法一: 拦截信号 trap命令
操作系统:
进程之间进程通信的方式: 信号
SIGHUP
session–》会话
一个session可能会有一个session首进程,而一个session首进程可能会有一个控制终端。
一个进程组可能会有一个进程组首进程。进程组首进程的进程ID与该进程组ID相等。
这儿是可能会有,在一定情况之下是没有的。
与终端交互的进程是前台进程,否则便是后台进程
SIGHUP会在以下3种情况下被发送给相应的进程:
- 1、终端关闭时,该信号被发送到session首进程以及作为job提交的进程(即用 & 符号提交的进程)
- 2、session首进程退出时,该信号被发送到该session中的前台进程组和后台进程组中的每一个进程
- 3、若进程的退出,导致一个进程组变成了孤儿进程组,且新出现的孤儿进程组中有进程处于停止状态,则SIGHUP和SIGCONT信号会按顺序先后发送到新孤儿进程组中的每一个进程。
系统对SIGHUP信号的默认处理是终止收到该信号的进程。所以若程序中没有捕捉该信号,当收到该信号时,进程就会退出。
[root@localhost lianxi]# echo $$
13877
[root@localhost lianxi]#
[root@localhost lianxi]# kill -l 查看信号的类型
1) SIGHUP --》父进程死的时候会给下面的子进程发,系统对SIGHUP信号的默认处理是终止收到该信号的进程。
2) SIGINT ---》按CTRL+C 强制终止某个进程 interrupt 中断
9) SIGKILL --》系统强制杀死进程的信号 ---》内核会调用某个函数去kill掉进程--》锦衣卫出动杀死 kill --》不能被屏蔽
15) SIGTERM ---》 系统告诉进程本身,自我终结 terminate
[root@localhost ~]# kill 63081 --》发送的是15信号
当父进程被杀死的时候,子进程如果还存活会成为一个孤儿进程--》会被第1个进程systemd,systemd进程的编号是1 ,这是centos7里的第1个进程
centos6里的第1个进程叫init ,进程号也是1
[root@localhost lianxi]# cat while.sh
trap "echo i am busy" 1 2 15 9
n=1
while :
do
echo "luoxu$n"
sleep 100
python36 while.py
((n++))
done
[root@localhost lianxi]#
[root@localhost lianxi]# cat while.py
import time
while True:
print("luoxu")
time.sleep(1)
[root@localhost lianxi]#
方法二:supervisor –>让某个程序做成一个服务,让他一直运行
方法三:让程序在后台运行 &的使用
& 放在命令后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时此进程(命令执行相当于本质是开启一个进程)就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的。
[root@routerA_Cpb lianxi]# cat test.sh
#!/bin/bash
while true
do
echo 1
sleep 3
done
[root@routerA_Cpb lianxi]# bash test.sh
1
1
1
^C
[root@routerA_Cpb lianxi]# bash test.sh &
[2] 2245
[root@routerA_Cpb lianxi]# 1
1
1
1
^C
[root@routerA_Cpb lianxi]# 1
1
1
1
^C
[2]- 已杀死 bash test.sh
[root@routerA_Cpb lianxi]#
未完待续
…….
无标题
要多做让宝宝开心的事,要多陪宝宝,要听宝宝话,不能让宝宝伤心难过。