ssh -t user@server1 "ls -al /root/test/"
上面提到的代码工作正常,并显示测试目录文件夹的所有内容,但此代码失败
ssh -t user@server1 "/etc/init.d/mysql start"
它不会启动 mysql 服务器,我已经登录到服务器并使用相同的命令启动 mysql 服务器
任何人都可以解释这种行为吗?我做错了什么有点困惑:(
做这样的事情:
ssh user@hostname "/etc/init.d/mysql start < /dev/null > /tmp/log 2>&1 &"
SSH 需要使用 stdin 和 stdout 进行交互。这将允许它这样做并将输出重定向到有用的地方。
我不确定这种行为的根源,可能是因为 ssh 分配了伪终端。但是,您可以将解决方法与 sudo 一起使用:
ssh -t user@server1 "sudo service mysql start"