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

问题描述 投票:0回答:1

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个命令没有被执行。

bash ssh alias
1个回答
1
投票

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

如果您需要在远程主机上执行一系列命令,并且需要经常重复这些命令,则将命令放在自己的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保存在文件中,以便以后检查或终止它更容易,而无需手动搜索后台进程。

© www.soinside.com 2019 - 2024. All rights reserved.