【问题标题】:how to execute init scripts from the command line using ssh如何使用 ssh 从命令行执行初始化脚本
【发布时间】:2015-07-01 22:11:22
【问题描述】:
ssh -t user@server1 "ls -al /root/test/"

上面提到的代码工作正常,并显示了测试目录文件夹的所有内容,但是这段代码失败了

ssh -t user@server1 "/etc/init.d/mysql start"

它没有启动mysql服务器,我已经登录到服务器并使用相同的命令启动mysql服务器

谁能解释这种行为?我做错了什么有点困惑:(

【问题讨论】:

    标签: mysql linux bash unix ssh


    【解决方案1】:

    做这样的事情:

    ssh user@hostname "/etc/init.d/mysql start < /dev/null > /tmp/log 2>&1 &"

    ssh 需要使用 stdin 和 stdout 进行交互。这将允许它这样做并将输出重定向到有用的地方。

    【讨论】:

    • ssh -t 提供puedo终端进行交互
    【解决方案2】:

    我不确定这种行为的根源,可能是因为 ssh 分配了伪终端。但是,您可以使用 sudo 解决方法:

    ssh -t user@server1 "sudo service mysql start"
    

    【讨论】:

    • 奇怪,什么操作系统?我在 RedHat 7 上测试过
    • 我正在使用 centos 6.4 和 maria db 10.0.17 安装。我没有尝试进一步尝试调查为什么使用此命令后它不起作用 ssh user@hostname "/etc/init.d/mysql start /tmp/log 2>&1 &"
    猜你喜欢
    • 2018-03-29
    • 2019-05-20
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多