setsid
在新的会话中运行程序
补充说明
setsid命令 子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用setsid来实现。,而命令行或脚本中可以通过使用命令setsid来运行程序实现。setsid帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。
语法
setsid[options] <program> [arguments ...]
选项
- -c, --ctty 将控制终端设置为当前控制终端
- -f, --fork 总是 fork
- -w, --wait 等待程序退出,并使用相同的返回
实例
可见 setsid 的使用也是非常方便的,也只需在要处理的命令前加上 setsid 即可
代码语言:javascript复制[root@root ~]# setsid ping www.ibm.com
[root@root ~]# ps -ef |grep www.ibm.com
root 31094 1 0 07:28 ? 00:00:00 ping www.ibm.com
root 31102 29217 0 07:29 pts/4 00:00:00 grep www.ibm.com
[root@root ~]#
unset
删除指定的shell变量或函数。
概要
unset [-f] [-v] [-n] [name ...]
主要用途
- 删除一到多个shell变量(不包括只读变量)。
- 删除一到多个shell函数。
- 删除一到多个具有引用属性的变量(如果-n选项存在)。
选项
- -f:仅删除函数。
- -v:仅删除变量(不包括只读变量)。
- -n:删除具有引用属性的变量名(如果该选项存在)。
参数
- name(可选):要删除的变量或函数。
返回值
返回成功除非选项错误或要删除的变量或函数有只读属性。
例子
代码语言:javascript复制# 删除变量。
declare paper_size='B5'
unset -v paper_size
# 删除函数。
function show_result(){ echo 'Last Command Return: $?'; }
unset -f show_result
# 当不指定选项时,优先删除变量,如果失败则删除函数。
declare -i aa=100
function aa(){ echo 'aa'; }
unset aa
# 变量'aa'已被删除。
declare -p aa
# 函数'aa'存在。
declare -F|grep aa
# 演示unset使用-n选项,name指定了引用变量时的情况。
declare a=3
# 定义引用变量
declare -n b=a
# 查看属性,显示declare -n b="a"
declare -p b
# 显示3
echo ${b}
# 显示a
echo ${!b}
# 指定-n选项时
unset -n b
# 引用变量b已被删除
declare -p b
# 被引用的变量a未被删除
declare -p a
# 演示unset不使用-n选项,name指定了引用变量时的情况。
declare a=3
# 定义引用变量
declare -n b=a
# 查看属性,显示declare -n b="a"
declare -p b
# 显示3
echo ${b}
# 显示a
echo ${!b}
# 不指定-n选项时
unset b
# 引用变量b未被删除,显示declare -n b="a"
declare -p b
# 被引用的变量a被删除
declare -p a
注意 该命令是bash内建命令,相关的帮助信息请查看help命令。