bash - 在 Compute Engine 上完成启动脚本后保持屏幕活动
问题描述
我在 Compute Engine 上运行启动脚本,env 是 Ubuntu 16.04 ,该脚本正在运行一个屏幕,然后在屏幕内运行一个进程。
所有回波线都打印到串行端口 1 屏幕上。
问题是当我通过 SSH 连接到机器时,没有运行屏幕。
我测试了每条线以确保它们正常工作。
有人可以帮我理解这个问题吗?
剧本:
#! /bin/bash
echo "going to sleep"
echo "starting bitcored"
screen -d -m -S testScreen 'bitcored'
echo "bitcored started"
解决方案
当Ascreen
内部的进程完成时,它会自动关闭。为了让它保持打开状态,你需要一个内部的活动进程。如果您正在其中运行的进程因任何原因完成,您可以screen
通过在进程结束时启动交互式 shell 来保持忙碌,例如:
screen -d -m -S testScreen "bitcored ; exec bash"
这将bash
在bitcored
停止运行时启动,并在停止时关闭屏幕bash
,通常情况下只能手动执行。
推荐阅读
- typescript - 当服务器启动nestjs时,只运行一次代码并插入到数据库中
- java - 没有公共字段的 JPA 继承
- javascript - 使用表单数据将数组发布到使用 AJAX 的 C# WebAPI
- windows - 为什么 Windows 中的 %random% 基于时间以及如何获得真正的随机数?
- log4j2 - Log4j2.properties 文件将日志写入 .log 文件但不写入 .err 文件
- javascript - Redux 状态更新但表不更新(即使是纯和不可变状态更新)
- python - 如何提取“?”之后的单词
- java - 在不使用 POJO 的情况下从 JAVA 中的 JSON 文件动态生成 JSON Schema
- android - 带有 Android Studio 的房间数据库
- java - 如何在 Android Studio/java 上关联两个 datepickerdialogs?