shell管理前台进程
shell内置变量
$?:代表上一个命令执行后的退出状态
$0:shell或shell脚本的名字
$@:将各个参数分别加双引号返回
$_:代表上一个命令的最后一个参数
$$:代表所在命令的PID
$#:参数的个数
if [ $# -eq 0 ]; then
UpdateIp
__ReadINI ../conf/install_config.ini
main
else
UpdateIp
use_conf=".config_$(basename $0 _install.sh).ini"
cp -rfp $1 '../conf/${file_name}'
__ReadINI ../conf/${file_name}
cp -av ../conf/${file_name} ${INSTALL_DIR}/conf/${file_name} 2>&1 >/dev/null
main 2>&1 | tee -a ../log/enterprise.log
fi
shell终止前台进程
flink进程用servicectl stop taishi杀不掉需要手动终止
flinkpid=`ps -ef | grep java | grep flink | awk '{print $2}'`
kill -9 $flinkpid
su - elasticsearch /app/taishi/elasticsearch/bin/elasticsearch
把所有关联启动的子进程一起杀掉
ps -ef | grep elasticsearch | awk '{print $2}' | xargs kill -9
一直在终端输出日志的就是前台进程 一旦按ctrl+c或者使用kill -9 pid 那么这个进程就会被终止掉
使用systemctl 进行启动和管理的都是后台进程的方式 但是在docker和supervisor管理情况下以后台进程的方式会造成一些问题
sudo cd 不生效
shell
shell是一个命令解析器,所谓shell是一个交互式的应用程序。
shell执行外部命令的 时候,是通过fork/exec叉一个子进程,然后执行这个程序。
sudo
sudo 是一种程序,用于提升用户的权限,在linux中输入sudo就是调用sudo这个程序提升权限
sudo的意思是,以别人的权限起一个进程,并运行程序。
cd
cd是shell的内部命令。 也就是说,是直接由shell运行的,不启动子进程。
cd不是一个应用程序而是Linux内建的命令,而sudo仅仅只对应用程序起作用
shell的执行方式
1.登录模式shell
sudo ,su ,ssh 的方式都是伴随着登录后执行命令 登录模式触发的文件流程
2.非登录模式shell
在当前用户的身份正常执行一个shell 比如 sh a.sh 或者 ./a.sh 这种情况不会触发登录模式的完整流程
3.交互式模式shell
当用户打开一个终端命令行工具后,会进入一个输入命令得到结果的交互界面,这个时候就是交互式shell.bashrc文件通常只在interactive模式下才会执行
4.非交互式模式shell
通过ssh远程 shell 执行一个文件,你就不是在 interactive 模式下.bashrc不会触发.但是因为登录的原因login shell 都会触发,也就是说profile文件依然会执行
shell分屏操作
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/13596210.html