shell脚本结束
1. 一个语法正确的shell脚本正常运行结束后,系统返回值是什么
你可以使用$?来查看脚本执行后的返回,
echo $? 为0的话表明执行成功,非零表示有误,具体的返回值可能是脚本内部提供的!
2. Shell 脚本 if 判断后,怎么终止当前脚本但不退出 shell
代码如下:
if list then
do something here
elif list then
do another thing here
else
do something else here
fi
EX1:
复制代码代码如下:
#!/bin/sh
SYSTEM=`uname -s` #获取操作系统类型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi #ifend
基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。
3. 如何运行和结束xshell脚本
如何启用脚本文件: 1 1.打开xshell 5,在[工具]菜单中锁定[脚本]后选择[运行],后在弹出的:打开对话框。 2.选择脚本文件。 3.点击[确定]。 END 如何退出脚本 1.同样打开xshell,在[工具]菜单锁定[脚本]后选择[取消]。
4. linux shell 脚本运行完毕后不能自动停止
最简单方法:
其实,你按一下回车就可以知道是否"结束"了吧?
更好的办法:
你在done后面加多两行:
------------代码开始------------
wait
echo "All is ok"
exit 0
------------代码结束------------
参考资料:
wait 命令
http://book.51cto.com/art/201205/338877.htm
5. linux上flock用独占锁运行的shell脚本超时后,如何让它自动强制结束
大前提,你用的是bash,其他shell应该也有类似的任务管理功能,具体你自己去查。
简单说一下思路,假定你那个有 flock 的脚本叫 a.sh, 你不要直接在crontab中调用 a.sh,而是调用另外一个脚本,比如 main.sh,main.sh 应该长成这个样子
#!/bin/bash
#启动a.sh
/path/to/a.sh&
#每秒钟检查一下a.sh是否结束,如果结束,则退出当前进程,如果10秒钟后a.sh仍未结束,则kill掉它
for((x=0;x<10;x++));do
sleep1
#检查a.sh任务是否存在
jobs%12>/dev/null
if[$?-ne0];then
#a.sh已经结束
exit0
fi
done
#超时,kill掉a.sh
kill-9%1
如上面的注释,main.sh 后台启动 a.sh 后,在10秒内不断的检查这个任务是否还在运行,如果不在了,那说明 a.sh 已经结束了,那 main.sh 也可以结束。如果超时,则强行杀掉 a.sh。
6. shell 脚本中后台调用函数结束
functiongettop()
{
localTOPFILE=build/core/envsetup.mk
if[-n"$TOP"-a-f"$TOP/$TOPFILE"];then
echo$TOP
else
if[-f$TOPFILE];then
#Thefollowingcircumlocution(repeatedbelowaswell)ensures
#
#fakepwithsymlinknames.
PWD=/bin/pwd
fi
}
7. Linux 编写一个shell脚本,从键盘输入一个字符,打印一个字符,直到end结束
#!/bin/bash
while read
do
if[ $1='end' ];then
break
else
echo $1
fi
done
8. Linux系统定时任务时shell脚本停止执行如何解决
linux下使用crontab命令被用来提交和管理用户的需要周期性执行的任务,示例如下:
crontab
-e
编辑周期任务
30
21
*
*
*
/etc/init.d/smb
restart
每晚的21:30重启smb
crontab命令说明:
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
语法
crontab(选项)(参数)
选项
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
参数
crontab文件:指定包含待执行任务的crontab文件。
知识扩展
linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
crontab文件的含义:
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute
hour
day
month
week
command
顺序:分
时
日
月
周
其中:
minute:
表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
9. 如何使用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"
10. shell脚本跑72小时后结束
开始有个时间
然后不断循环测试重启
重启后记录时间,和开始时间比,超过72小时就kill 自己
也可以写个计划任务,72小时后,杀掉这个shell进程