我有一个脚本,用于启动和停止 EC2 实例上的 tinyproxy。该脚本的核心(除了我这边的一些网络之外)是 2 个命令:
ssh -t $PROXY_HOST sudo '/etc/init.d/tinyproxy start'
ssh -t $PROXY_HOST sudo '/etc/init.d/tinyproxy stop'
其中 $PROXY_HOST 在 ~/.ssh/confing 中配置
host MyHost
HostName <real ip here>
User ubuntu
IdentityFile <path is here>
ServerAliveInterval 60
ServerAliveCountMax 4
在 Amazon Linux 上一切都很好,但是迁移到 Ubuntu 后出现了一个问题:
启动/停止 tinyproxy 的两个脚本都在 EC2 机器上本地运行
停止脚本的远程工作方式与在 Amazon Linux 上一样 - 执行后没有正在运行的 tinyproxy 进程
启动脚本无法远程工作
EC2 AMI 基于 ubuntu-trusty-14.04-amd64-server
关于我应该从哪里开始挖掘,有什么提示吗?
附言:是的,迁移后,我将 ~/.ssh/config 中的默认用户从 ec2-user 更改为 ubuntu
编辑:根据 muru 的要求添加了信息
本地和远程运行的输出相同
+ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+ CONFIG=/etc/tinyproxy.conf
+ DAEMON=/usr/sbin/tinyproxy
+ DESC=tinyproxy
+ FLAGS=
+ NAME=tinyproxy
+ [ -r /etc/default/tinyproxy ]
+ test -f /usr/sbin/tinyproxy
+ set -e
+ [ start != stop ]
+ [ -f /etc/tinyproxy.conf ]
+ awk {print $2}
+ grep -i ^User[[:space:]] /etc/tinyproxy.conf
+ USER=nobody
+ awk {print $2}
+ grep -i ^Group[[:space:]] /etc/tinyproxy.conf
+ GROUP=nogroup
+ sed -e s/"//g
+ awk {print $2}
+ grep -i ^PidFile[[:space:]] /etc/tinyproxy.conf
+ PIDFILE=/var/run/tinyproxy/tinyproxy.pid
+ dirname /var/run/tinyproxy/tinyproxy.pid
+ PIDDIR=/var/run/tinyproxy
+ [ -n /var/run/tinyproxy -a /var/run/tinyproxy != /var/run ]
+ [ ! -d /var/run/tinyproxy ]
+ [ nobody ]
+ chown nobody /var/run/tinyproxy
+ [ nogroup ]
+ chgrp nogroup /var/run/tinyproxy
+ echo -n Starting tinyproxy:⋅
Starting tinyproxy: + start-stop-daemon --start --quiet -o --exec /usr/sbin/tinyproxy --
+ echo tinyproxy.
tinyproxy.
+ exit 0
答案1
看起来 Amazon Linux 和 EC2 上的 Ubuntu 14.04 在默认处理 SIGHUP 方面存在一些差异。因此,基本上添加禁止解决问题:
ssh -t $PROXY_HOST sudo 'nohup /etc/init.d/tinyproxy start'