linux退出 脚本运行_linux下运行matlab脚本直接退出 - CSDN
  • 后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台...

    后台运行脚本

    1. 执行脚本test.sh:./test.sh
    2. 中断脚本test.sh:ctrl+c
    3. 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z
    4. 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid)

    1. 直接在后台运行脚本test.sh:./test.sh &
    2. 查看当前shell环境中已启动的任务情况:jobs
    3. 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid)
    4. 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number

    以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。

    1. 不中断的在后台运行test.shnohup ./test.sh &(test.sh的打印信息会输出到当前目录下的nohup.out中)
    2. 使用jobs可看到test.sh处于running状态
    3. 使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程
    4. 退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用ps -ef可以看到

    在后台不中断的运行test.sh,可以使用nohup忽略hangup信号,或者使用setsid将其父进程改为init进程(进程号为1)

    1. 不中断的在后台运行test.sh另一个命令setsid ./test.sh &
    2. 使用ps -ef |grep test.sh可看到test.sh进程的父进程id为1

    测试脚本

    #!/bin/bash
    
    int=1
    while(( $int<=100 ))
    do
        echo $int
        let "int++"
        sleep 1
    done
    展开全文
  • linux,shell,程序运行

    序言

    现有一个本地发包程序和一个收包程序,需要同时运行,通过脚本实现发收包处理。


    在.sh文件中添加可执行文件

    • 在可执行文件目录下新建并编辑.sh脚本文件

      • (1)进入可执行文件目录并新建脚本文件
        • touch test.sh
        • gedit test.sh或vi test.sh
      • (2)添加脚本内容: #!/bin/bash
        • #! 是脚本解释器程序路径。
        • /bin/bash类似的还有bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等
          • /bin/sh(即/bin/dash)是Debian系统下的Dash Shell符号链接,Ubuntu继承了Debian,从6.10版本开始默认使用Dash Shell。
          • /bin/bash和/bin/sh两者大体上没什么区别,/bin/sh更小更简单而且只能使用POSIX标准规定的特性
      • (3)添加可执行文件和标准输入:如 ./send 1234 1235 1236 1237
        • ./send为编译后的可执行文件,1234…为标准输入


    执行脚本文件

    • (1)执行单个脚本文件
      • 方法1:本目录下运行
        • 进入脚本文件所在目录
        • ./test.sh执行脚本
        • 或 sh test.sh
        • 或 bash test.sh
        • sh和bash方式不需要实现添加执行权限,test.sh被调用执行
      • 方法2:绝对路径执行
        • /home/username/xx/test.sh
        • 或~/xx/test.sh
      • 方法3:当前shell环境中执行
        • 进入脚本文件所在目录
        • source test.sh
        • 或 . test.sh
      • 注:方法1和2都是在父shell中开启子shell,执行完返回父shell,而方法3则是在当前shell中执行


    • (2)单个脚本文件执行多个命令

      • 每个命令用“ ; ”隔开
        • 各个命令都会执行,互不影响,但不保证每个命令都执行成功
      • 每个命令用“ && ”隔开
        • 前面命令执行成功才去执行后面的命令,保证所有命令执行完毕所有过程都是成功的
      • 每个命令用“||”隔开
        • 前面的命令执行失败才去执行下一条命令,直到执行成功一条命令为止

      注:也可以在终端以“;”、“&&”、“||”方式执行多条命令


    • (3)执行多个独立脚本文件 - 通过gnome-terminal来打开新终端并运行脚本
      • gnome-terminal - -tab “atsc” -x bash -c “sh ./run.sh;exec bash”
      • 注意”“为英文输入下的双引号
      • 命令解释:
        • – -tab:打开新终端(- - window窗口,- -tab标签)
        • “atsc”:新终端名称
        • -x:执行后边命令
        • -c:command
        • sh ./xxx/run.sh:目录下脚本运行
        • exec bash:保持新终端不退出
      • 命令使用:打开多个终端并运行相应脚本实现多个脚本独立运行
        • gnome-terminal - -tab “atsc” -x bash -c “sh ./run.sh;exec bash” ; gnome-terminal - -tab “temp” -x bash -c “sh ./send.sh;exec bash”
          • 使用了“;”,每个命令都执行,互不影响


    • (4)执行多个独立脚本文件 - 通过shell脚本文件启动其他脚本文件

      脚本实现发收包处理

      • 方式1:通过gnome-terminal实现
        • gnome-terminal - -tab “atsc” -x bash -c “sh ./run.sh;exec bash” ; gnome-terminal - -tab “temp” -x bash -c “sh ./send.sh;exec bash”
        • 过程1:先跑了收包程序,允许一定时间的阻塞等待
        • 过程2:再跑发包程序
      • 方式2:通过shell脚步文件启动其他脚本文件
        • 如下图
        • 该写法显得有些冗余,可能有更专业简洁的写法。此处建议使用方法1
    #!/bin/bash
    
    echo "-------auto run receiver & sender-------"
    
    for filename in $(ls /xxx/repository)
    
    do
            gnome-terminal --tab "receiving" -x bash -c "sh ./receive.sh;exec bash"
            gnome-terminal --tab "sending" -x bash -c "sh ./send.sh;exec bash;"
            exit
    done
    
    exit


    补充:路径问题

    • ./ 当前目录

    • ../ 上一级目录

    • / 根目录

    • ~/

      • root账号登录表示/root
      • 用户user账号登录表示/home/user



    Acknowledgements:
    http://www.cnblogs.com/EasonJim/p/6850319.html
    http://blog.csdn.net/alifrank/article/details/47396127
    http://blog.csdn.net/bananasssss/article/details/51315342
    http://newkedison.tk/blog/tips-for-gnome-terminal.html

    2017.07.27

    展开全文
  • 当我们在linux运行脚本后,如果想停止脚本,就没有windosw中那么方便了,我将方法总结如下: 1,根据脚本名称搜索脚本执行的进程;ps -ef|grep GenerateMonitorCompanyFinance2,根据进程ID杀掉进程;kill -9 ...

    当我们在linux中运行脚本后,如果想停止脚本,就没有windosw中那么方便了,我将方法总结如下:
    1,根据脚本名称搜索脚本执行的进程;

    ps -ef|grep GenerateMonitorCompanyFinance

    这里写图片描述

    2,根据进程ID杀掉进程;

    kill -9 24853
    展开全文
  • command &和nohup command区别 command & 是后台运行 Ctrl + C后程序不停止运行,关闭shell会话后或者其他原因导致shell会话退出 程序停止运行 nohup command shell会话退出后...终止脚本运行 ps -aux | gr...

    command &和nohup command区别

    command & 是后台运行 Ctrl + C后程序不停止运行,关闭shell会话后或者其他原因导致shell会话退出 程序停止运行

    nohup command shell会话退出后,程序不停止运行,Ctrl+C程序停止运行

    nohup后台运行脚本

    nohup command &

    终止脚本运行

    1. ps -aux | grep .sh
      在这里插入图片描述
    2. kill -9 PID
      在这里插入图片描述
      终止脚本,此时可能会遇到一些意外情况,比如:脚本中运行hadoop拷贝数据,hdfs dfs -cp 源目录 目标目录
      这个命令会启FsShell进程。此时还需要运行jps查看正在运行的FsShell进程,kill -9 PID,kill掉。
    展开全文
  • linux提供了很多方法可以直接将普通的命令、脚本、应用程序以后台的形式运行起来,这样就不会阻塞终端窗口的继续使用。常用的涉及后台执行的命令有十几多个,包括:&、ctrl+z、bg、fg、nohup、disown、...
  • 背景:将我的模型移植到了云服务器上,但是用putty连接服务器运行脚本时,我拖动putty的窗口训练就会被打断。为了解决这个问题,必须把python脚本放到后台去运行,这样即使我关闭了 putty连接程序也会继续运行。 ...
  • 使用后台运行的方式,日志任然在输出 找了半天,试了一个能让脚本退出的命令 nohup java -jar /usr/local/auth-app-1.0-SNAPSHOT.jar &gt;/dev/null 2&gt;&amp;1 &amp; 但这个命令会吃掉所有日志...
  • nohup sh start_ngrok_server.sh &amp;&gt;/dev/null &amp; 这种办法退出 SSH后,程序还没死 但是如果程序崩溃也是没有保护的 等以后心情 好了再告诉大家如何让程序死了又重来...
  • 如果通过ssh远程连接到linux系统终端,在shell下执行程序。假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile。 当我们用 ./app paramfile 命令运行程序后关闭ssh连接退出...
  • Linux后台运行脚本

    2019-09-10 19:34:16
    nohup命令 如下所示: $ nohup ./shell-script.sh &...符号在后台执行命令,即使你退出登录,这个程序也会一直在后台执行。你却无法重新连接到这个会话,若重新连接该会话,screen命令可以。 开启: $ scre...
  • linux之screen运行脚本

    2019-09-09 09:41:51
    1.新开一个screen : [root@localhost ~]# screen 2.进入screen执行脚本: [root@localhost ~]# 省略... ...4.查看脚本是否还在运行(或窗口状态): [root@localhost ~]# screen -ls There is a ...
  • 这几天试用鸟哥的脚本,总发现一种程序执行完系统会自动注销 查过一些资料得出结果 當子程序完成後,在子程序內的各項變數或動作將會結束而不會傳回到父程序中,如果要在父程序中调用,要用 source 來執行腳本,问题...
  • 退出整个 shell 脚本

    2019-02-13 10:17:10
    功能: 在被调用的脚本发生错误时立即终止整个脚本运行。   1.退出当前脚本 #!/bin/bash ...
  • 在shell 脚本中,正常退出状态码在0~255.正常退出0,其他异常 系统变量$?保存了最后一条指令的退出码状态 例子: #!/bin/bash echo "hello world" echo "$?" abc echo "$?" echo  exit 120 打印结果...
  • Linux–CentOS定时运行Python脚本 最近公司的项目开始进入运营阶段,数据库的记录也开始多了起来。看了postgresql的自动清理好像不太符合需求,暂定对接口请求记录表保留3个月内的记录,既然postgresql不支持那就...
  • vi test1 #创建脚本文件test1 然后按 i #进入insert编写状态 #!/bin/bash #告诉系统下面的东西要用sh这种shell执行 echo "hello world!" #此时编写完毕 按Esc推出编写模式 再输入 :wq #保存并退出文件 返回...
  • 最近在将自己的一个项目从win转移到linux,所以在测试一些ssh启动脚本的事情。有一个问题就是通过ssh启动的脚本你一断开ssh,脚本就会被关闭掉。查了很多个办法比如nohup等,发现screen是个非常简单的办法。下文是...
  • 把要执行的命令复制到第4行,保存退出 ④ 执行脚本 ./1sh ⑤ 查看执行脚本,共消耗多长时间 基础脚本模板 #!/bin/bash starttime=`date +'%Y-%m-%d %H:%M:%S'` #执行程序 endtime=`d...
  • 1 使程序可靠运行 linux下远程进行命令执行时 可能由于网络问题,使得终端窗口被断开,导致终端内子命令执行失败。 为保证命令不会因终端断开执行失败,有如下方法: ...
1 2 3 4 5 ... 20
收藏数 118,096
精华内容 47,238
关键字:

linux退出 脚本运行