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分屏操作

    

原文地址:https://www.cnblogs.com/yxh168/p/13596210.html