Joe*_*ley 1 linux bash command-line
我在 Arch Linux 笔记本电脑上运行 Minecraft 服务器。Minecraft 的服务器软件在命令行上作为交互式程序运行,因此我在分离的屏幕会话中启动它,允许我在每次需要访问它时重新附加。
为此,我使用了一个脚本(我其他时候不使用 screen,所以不用担心“grep SCREEN”)
#!/bin/bash
PID=ps aux | grep SCREEN | sed -n 1p | awk '{ print $2; }'
sudo screen -r $PID
Run Code Online (Sandbox Code Playgroud)
这将获得服务器正在运行的屏幕会话的 PID,然后重新附加到该屏幕。
现在我想知道,因为我在任何地方都找不到,是否可以使用单行来重定向输出
ps aux | grep SCREEN | sed -n 1p | awk '{ print $2; }'
Run Code Online (Sandbox Code Playgroud)
直接到 $argument 中
sudo screen -r $argument
Run Code Online (Sandbox Code Playgroud)
无需跨越 2 行
基本上我想将 awk 的标准输出重定向到屏幕的参数中,而不是作为屏幕的标准输入。
这似乎应该相对容易找到和执行,但是我在 Google 上很难找到有关它的任何信息。
任何帮助表示赞赏!谢谢
bar*_*lop 12
xargs 会这样做
$echo abc | xargs prog
Run Code Online (Sandbox Code Playgroud)
在上面, xargs 将使用 arg abc 即执行 prog $prog abc
另一个例子
$ echo abc | xargs echo w x
w x abc
Run Code Online (Sandbox Code Playgroud)
相反ps aux | grep SCREEN | sed -n 1p | awk '{ print $2; }',你可以做
ps aux | awk '/SCREEN/{print $2;exit}'
Run Code Online (Sandbox Code Playgroud)
或者,更推荐,如果你安装procps:
pgrep SCREEN
Run Code Online (Sandbox Code Playgroud)
(按照说明将这些命令用反引号括起来,或者使用$()更易于阅读和嵌套的结构,并执行相同的操作。)
或者,更推荐:如果您只运行一个 Screen 会话,只需:
screen -r
Run Code Online (Sandbox Code Playgroud)
默认情况下将附加到唯一的现有会话。
如评论中所述:如果您将来可能想运行多个 Screen 会话,请使用会话命名功能。启动一个命名会话
screen -S minecraft
Run Code Online (Sandbox Code Playgroud)
然后重新附加
screen -r minecraft
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9549 次 |
| 最近记录: |