如何使用 screen 命令和 ssh 在远程机器上运行脚本?

Ita*_*not 2 ssh gnu-screen

我想在服务器列表上运行并在使用screen.

手动,我会这样做:

screen -RD
./run_script
Run Code Online (Sandbox Code Playgroud)

并手动远程我会这样做:

ssh root@server "screen -RD && ./run_script"
Run Code Online (Sandbox Code Playgroud)

但实际上发生的是它screen -RD正在运行,当我输入时,exit它才开始运行脚本。

那么如何实现screen -RD远程运行然后在第一屏终端内发出命令呢?

编辑#1:

[root@edge14 ~]# screen -r -X /nfs/ops/component/edge/scripts/move_stuck_aggfiles_to_hadoop.sh && screen -RD
No screen session found.
[root@edge14 ~]# 
Run Code Online (Sandbox Code Playgroud)

Jen*_*y D 5

你用-X开关。从手册页:

  -X   Send  the specified command to a running screen session. You can
        use the -d or -r option to tell screen to look only for attached
        or detached screen sessions. Note that this command doesn't work
        if the session is password protected.
Run Code Online (Sandbox Code Playgroud)

将此与实际看到屏幕结合起来:

ssh root@server "screen -dr -X ./run_script && screen -RD"
Run Code Online (Sandbox Code Playgroud)

(但你真的不应该允许以 root 身份登录 ssh,从安全的角度来看这是非常糟糕的做法。)