当前位置:首页 » 编程软件 » shell脚本退出程序

shell脚本退出程序

发布时间: 2023-03-01 07:28:05

⑴ shell如何退出当前命令,自动执行下一条指令

不知道你程序具体情况,可试试
echo "12345678" &
echo -e "12345678\r"
echo "12345678"> /dev/ttyS1

⑵ shell中退出脚本不在运行怎么写

脚本中退出用exit
如果是执行脚本中退出,用ctrl+c

⑶ shell脚本什么时候会异常退出

我经验是遇到语法错误时会异常退出(如下执行到if便退出,不会再打印end),一般情况下脚本都是从上到下执行完才退出的

!/bin/bash
echostart
if#syntaxerror:unexpectedendoffile
echoend

⑷ 如何使用shell脚本停止应用

参考最底下的shell 代码,具体功能都有注释说明的。 使用时将代码存入文件中,比如 a.sh, 然后:

chmod+xa.sh#增加可执行权限
./a.shapp_name#替换app_name为你要中止运行的app名称,比如firefox,emacs,等等


下面是具体代码

#!/bin/bash

#要停止的应用名字
name=$1

#先要找到你要停止的应用的PID(进程号).这里用pidof命令来找
PID=`pidof$name`

#如果没有找到,结束
if[-z"$PID"];then
echo"Error:Process$nameisnotfound"
exit1
fi

#然后用kill命令来向进程发送信号来终止应用
#-9表示发送KILL信号,任何进程收到这个信号后都会无条件终止运行。
kill-9$PID

#完成
echo"Done"

⑸ shell脚本让进程在后台运行以及进程后台转前台

我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用 putty 远程连接到日本 linux 服务器。所以使程序在后台跑有以下三个好处:

1:我们这边是否关机不影响日本那边的程序运行。(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼)

2:不影响计算效率

3:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。

方法有很多,这里主要列举两种。假如我们有程序 pso.cpp ,通过编译后产生可执行文件 pso ,我们要使 pso 在 linux 服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果。(假设操作都在当前目录下)

方法1在终端输入命令:

解释:将 pso 直接放在后台运行,并把终端输出存放在当前目录下的 log.file 文件中。

当客户端关机后重新登陆服务器后,直接查看 pso.file 文件就可看执行结果(命令:$ cat pso.file )。
方法2在终端输入命令:

解释: nohup 就是不挂起的意思,将 pso 直接放在后台运行,并把终端输出存放在当前

目录下的 pso.file 文件中。当客户端关机后重新登陆服务器后,直接查看 pso.file

文件就可看执行结果(命令: #cat pso.file )。

注:如果要使在前天执行任务放到后台运行,则先要用 ctrl+z 挂起该任务,然后用 bg 使之后台执行。
附:
在 Linux 中,如果要让进程在后台运行,一般情况下,我们在命令后面加上 & 即可,实际上,这样是将命令放入到一个作业队列中了:

对于已经在前台执行的命令,也可以重新放到后台执行,首先按 ctrl+z 暂停已经运行的进程,然后使用 bg 命令将停止的作业放到后台运行:

但是如上方到后台执行的进程,其父进程还是当前终端 shell 的进程,而一旦父进程退出,则会发送 hangup 信号给所有子进程,子进程收到 hangup 以后也会退出。如果我们要在退出 shell 的时候继续运行进程,则需要使用 nohup 忽略 hangup 信号,或者 setsid 将将父进程设为 init 进程(进程号为 1 )

上面的试验演示了使用 nohup/setsid 加上 & 使进程在后台运行,同时不受当前 shell 退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用 disown 命令:

另外还有一种方法,即使将进程在一个 subshell 中执行,其实这和 setsid 异曲同工。方法很简单,将命令用括号() 括起来即可:

注:本文试验环境为 Red Hat Enterprise Linux AS release 4 (Nahant Update 5) , shell 为 /bin/bash ,不同的 OS 和 shell 可能命令有些不一样。例如 AIX 的 ksh ,没有 disown ,但是可以使用 nohup -p PID 来获得 disown 同样的效果。

还有一种更加强大的方式是使用 screen ,首先创建一个断开模式的虚拟终端,然后用 -r 选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到 nohup 的效果,这在有多个命令需要在后台连续执行的时候比较方便:

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:746
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1007
python中的init方法 发布:2025-10-20 08:17:33 浏览:715
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:875
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1122
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:347
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:225
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:873