bash中的别名的多个命令,当第一个是ssh时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash中的别名的多个命令,当第一个是ssh时相关的知识,希望对你有一定的参考价值。

This question有一个很好的答案,如何将多个命令放在bash的别名中。

但是,如果您首先需要ssh到服务器,然后执行更改目录然后启动jupyter笔记本,您将如何做?

我尝试过类似的东西:

alias shortcut='ssh user@server -p 1234 -L 5678:localhost:91011; cd ~/somedir; jupyter notebook --ip=127.0.0.1

也许是因为我的ssh要求我输入密码,最后2个命令没有被执行。

答案

如果系统配置允许,有一些可能的改进以进一步方便。

如果您需要在远程主机上执行一系列命令,并且需要经常重复这些命令,则将命令放在自己的shell脚本中并将其放在远程主机上是合理的。

例如,在这种情况下,脚本可能只是

#!/bin/sh
cd ~/somedir && jupyter notebook --ip=127.0.0.1

将它们保存在文件中,向其添加执行位,然后就可以像ssh user@server -p 1234 -L 5678:localhost:91011 path/to/script.sh一样启动会话

这在this question中有所涉及,但我首选的方法是将脚本放在远程上的低分 - 我希望每个资源都驻留在它们所属的位置。

关于开始会话后你想做什么也有问题。似乎该命令是启动运行Jupyter Web服务的服务器进程。如果您只想在监视服务器的同时保持SSH会话,那么简单命令就足够了。但是如果你想让服务器保持在后台并记录输出(并且可能暂时离开SSH会话),可以使用nohup运行服务器并重定向其输出,方法是输入类似的脚本

nohup jupyter notebook --ip="127.0.0.1" >> stdout.log 2>> stderr.log &
echo "$!" > jupyter-notebook.pid

第二个命令将PID保存在文件中,以便以后检查或终止它更容易,而无需手动搜索后台进程。

以上是关于bash中的别名的多个命令,当第一个是ssh时的主要内容,如果未能解决你的问题,请参考以下文章

通过 ssh 会话执行 bash 别名 | Linux 中国

一大波实用的 bash 别名和函数

一大波有用的 bash 别名和函数

ssh 命令执行不考虑 .bashrc | .bash_login | .ssh/rc? [复制]

bash脚本中的大写命令别名?

在脚本中通过ssh捕获bash脚本的输出