免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1169 | 回复: 4
打印 上一主题 下一主题

[系统管理] 写脚本很久了,一直有一个疑惑,众所周知,脚本是一行一行执行的 [复制链接]

论坛徽章:
14
处女座
日期:2013-11-26 09:21:15操作系统版块每日发帖之星
日期:2016-03-25 06:20:00操作系统版块每日发帖之星
日期:2016-03-22 06:20:00操作系统版块每日发帖之星
日期:2016-03-21 06:20:00数据库技术版块每日发帖之星
日期:2015-11-13 06:20:00操作系统版块每日发帖之星
日期:2015-11-01 06:20:002015亚冠之卡尔希纳萨夫
日期:2015-09-29 13:31:42IT运维版块每日发帖之星
日期:2015-08-13 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00双鱼座
日期:2014-07-17 15:08:51卯兔
日期:2014-04-08 09:54:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-18 13:54 |只看该作者 |倒序浏览
执行完上一条指令紧接着就执行下面的一条,例如上面一条我执行一个文本处理,sort一个文件,
sort txt.txt >djljlsd
命令执行完了,但是程序可能还在后台运行,我怎样确保程序运行完之后才运行下一条指令呢

又如tomcat
startup启动,命令执行完有几条输出,输出完就是命令执行完了,但是实际上进程要看log文件才能确保正确启动,求解惑

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2015-12-18 14:08 |只看该作者

那是程序的问题, 程序被设计为后台执行(守护进程), 那你有个毛办法

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
3 [报告]
发表于 2015-12-18 15:43 |只看该作者
这个就是同步 or 异步。自己写的程序当然可以进行控制。
shell会是异步的吗?LZ确认sort会放后台?
我一直认为只有 nohup ${cmd} & 才是放入后台执行的。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2015-12-18 20:46 |只看该作者
通过查看Tomcat的脚本可以发现它的启动过程是这样的:
1. startup.sh 调用 catalina.sh
2. catalina.sh 首先调用 setclasspath.sh 设置环境变量,找到Java所在的路径,例如 _RUNJAVA="$JRE_HOME"/bin/java
3. catalina.sh 继续往下执行,用 eval "xxx &" 启动
  1.     eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
  2.       -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
  3.       -Dcatalina.base="\"$CATALINA_BASE\"" \
  4.       -Dcatalina.home="\"$CATALINA_HOME\"" \
  5.       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
  6.       org.apache.catalina.startup.Bootstrap "$@" start \
  7.       >> "$CATALINA_OUT" 2>&1 "&"
复制代码
由此可见,它实际上也是后台启动的,只是没有直接体现在 startup.sh 这个脚本的执行。

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
5 [报告]
发表于 2015-12-19 09:47 |只看该作者
本帖最后由 chengchow 于 2015-12-19 09:47 编辑

shell只有在上一句执行完成才会执行下一句
后台执行命令例外,如果你想等后台执行命令全部执行完成了才开始执行下一句
用wait命令就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP