linux-shell-screen后台调用-后台运行脚本和命令-仿start命令-伪窗口界面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-shell-screen后台调用-后台运行脚本和命令-仿start命令-伪窗口界面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3047字,纯文字阅读大概需要5分钟。
内容图文
![linux-shell-screen后台调用-后台运行脚本和命令-仿start命令-伪窗口界面](/upload/InfoBanner/zyjiaocheng/975/e7546583b2b7416782ee5a1699689602.jpg)
序
我比较熟练bat、cmd脚本。刚接触使用shell时,总会习惯想用windows窗口界面来套用shell脚本。于是找到screen后台命令,它可以交互shell脚本,保持后台运行。但是在批处理batch、cmd环境下,使用start 可以调用弹出其它cmd脚本。在使用screen命令弹出新会话后,总是需要手动按键断开会话。此文章特意为解决这个问而提出解决办法和实验过程与结果,即使用脚本或命令自动调用后台命令或后台脚本,无需系统等待或人工干预。供大家学习和参考。欢迎讨论。顺带吐槽的是,这个需求或解决办法,几乎很少很难在搜索引擎结果中有效出现,所以我将它写下发布出来,供大家学习和自己使用。
参考文章
ssh远程执行脚本并在后台运行,通过screen解决 http://blog.uouo123.com/post/823.html
文章出现重要线索:screen -x -S $screen_name -p 0 -X stuff "$cmd"
shell嵌套expect执行screen命令 https://blog.csdn.net/xbw12138/article/details/79271575
文章展示出部分shell代码,加入了expect命令。同样出现重要线索:screen -x -S $screen_name -p 0 -X stuff "$cmd"
我个人认为没必要介入expect命令,多此一举
其它文章
文中出现线索:bash -c 'ping www.baidu.com';
后台调用命令
使用环境为:centos 6.1 已安装screen命令。一切后台调用过程,尽可能绕开手动断开会话过程,所以经掉查发现,使用 -dmS参数开启一个已断开的会话,可以绕过手动断开操作。一般在开启会话同时调用命令的写法是:screen ping www.baidu.com 但是套用在这里时没有结果:screen -dmS test ping www.baidu.com。使用screen -ls 检查时,不是没有创建出后台会话,就是进入会话是黑屏。即,没有命令被执行。所以经测试查找。配合使用bash -c参数,才可以在后台调用命令。完整命令如下:
screen -dmS test bash -c 'ping www.baidu.com';
其中 -dmS test 指 后台静默创建名称为 test 的会话,会话名比较重要。
bash -c 'ping www.baidu.com' 指 会话中 执行 ping www.baidu.com 命令
解释
一般的shell命令,执行完就结束了。脚本调用命令岂不是多此一举?
答:举例中的ping命令在没有参数情况下会一直ping下去。如果放在脚本中执行,应当是会一直执行下去,导致后续命令暂停。且一般的命令通过这个方式调用时,会话将伴随着命令的结束而自动销毁。已通过测试证实。
测试代码:
screen -dmS mv; screen -dmS test bash -c 'service crond stop'; screen -ls;
执行完毕后,应当只出现1个名称为mv的会话
后台调用脚本
使用环境为:centos 6.1 已安装screen命令。将命令模式下的命令内容,无论怎样替换,始终无法执行。包括不限于这些举例./a.sh 、sh a.sh 所以经过参考文章发现重要线索:screen -x -S $screen_name -p 0 -X stuff "$cmd" 。原理应当是发送命令至指定会话中执行,所以前期创建会话时,应指定会话名。参数 -S 指定会话 参数 -X 发送命令 参数 stuff ?疑似?是输出命令执行 参数 -p 指定屏幕。-x 连接断开会话。经测试发现,不需要使用 参数 -x 。参数-p 0 指定屏幕 0是必须参数。
测试代码:
screen -dmS test; screen -dmS mv; screen -S test -p 0 -X stuff "sh /0/sh/init.sh"; screen -S test -p 0 -X stuff $'\n'; screen -ls;
执行完毕后,应当只出现1个名称为mv的会话
screen -S test -p 0 -X stuff $'\n'; 是用于执行命令“回车”的操作。否则脚本不执行。
测试中,应该保证脚本会始终执行,不结束。所以sh /0/sh/init.sh 是一段暂停并有提示内容的脚本。还原会话后,能看到暂停提示。
暂停测试脚本内容参看:https://www.cnblogs.com/date/p/10497018.html
结束
以上内容为shell脚本通过screen命令,静默后台调用命令或脚本,仿Windows、CMD的start命令,伪窗口界面的方法与说明。欢迎大家学习阅读与讨论指正。
内容总结
以上是互联网集市为您收集整理的linux-shell-screen后台调用-后台运行脚本和命令-仿start命令-伪窗口界面全部内容,希望文章能够帮你解决linux-shell-screen后台调用-后台运行脚本和命令-仿start命令-伪窗口界面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。