2016-09-08 11 views
1

Я использую go exec ssh, чтобы выпустить «tail -f» на удаленном сервере. Когда я убью этот процесс, но «tail -f» все еще запускаться на удаленном сервере. Что я могу сделать, чтобы убить «хвост -f» на удаленном сервере? код выглядит следующим образом. go excete ssh command и не может убить команду на удаленном сервере

package main 

import (
    "os/exec" 
    "github.com/astaxie/beego" 
    "time" 
) 
func main() { 
    var cmd = exec.Command("ssh","-t", "-p", "9122","[email protected]" ,"tail -f /log.out") 
    var err error 
    cmd.Start() 
    time.Sleep(time.Second*5) 
    err = cmd.Process.Kill() // when I killed this Process. The remote server [email protected] still run 'tail -f /log.out' 
    beego.Error(err) 
} 

ответ

0

Просто добавьте еще один аргумент «-t» в аргументах.

var cmd = exec.Command("ssh","-t", "-t", "-p", "9122","[email protected]" ,"tail -f /log.out") 

Для получения дополнительной информации см это link

0

Вы можете попробовать отправить Control-C

w, err := cmd.StdinPipe() 
ctlC, err := hex.DecodeString(`\x03`) //CtlC on most machines 
w.Write(ctlC) 

, прежде чем убить SSH

err = cmd.Process.Kill() 

это работает в моей установке