【问题标题】:Startup script to run detachted screen, switch user, and run multiple bash commands用于运行分离屏幕、切换用户和运行多个 bash 命令的启动脚本
【发布时间】:2022-06-22 09:45:04
【问题描述】:
我想创建一个小型启动脚本,在屏幕上连续执行多项操作。
- 脚本启动一个命名的、分离的屏幕(
screen -S discordbot -d -m 有效)
- 脚本中的用户已更改(
screen -S discordbot -X "su discordbot"、screen -S discordbot -X su discordbot 和 screen -S discordbot -d -m bash -c "su discordbot;" 似乎都不起作用,或者至少没有执行后续命令)。
- 已执行
cd 文件夹更改。
- Java jar 或其他脚本已启动。
当我运行多个机器人时,脚本需要能够以细微的变化连续多次执行此操作。关于如何做到这一点的任何指示?
【问题讨论】:
标签:
linux
bash
debian
startup
gnu-screen
【解决方案1】:
您启动的屏幕会话将在您启动的进程退出后立即退出。
这行得通,例如:
$ screen -S discordbot -d -m bash
$ screen -ls
There is a screen on:
2948.discordbot (Detached)
1 Socket in <...>
这样:
$ screen -S discordbot -d -m bin/discordbot.sh
bin/discordbot.sh 看起来像这样:
#!/bin/sh
echo "Sleeping..."
sleep 10
/bin/echo -n "Hit enter to finish this script: "
read
最后两行防止屏幕过早退出。您想在该启动脚本中执行的其他各种操作也应该可以工作,假设您以root 执行此操作,这样su 将在没有提示的情况下工作。