TrueDevs
@TrueDevs

Почему не выполняется exec.Command?

Приветствую, столкнулся с какой-то странной проблемой при выполнении exec.Command

PGDumpCmd := "pg_dump"
       Path := fmt.Sprintf("/tmp/backup_%v_%v.sql.tar.gz", dbname, time.Now().Unix())
	options := "-h " +  opts.PostgresHost +
		" -p " +  opts.PostgresPort +
		" -U " + opts.PostgresUsername +
		" -d " + dbname +
		" -w -Fc -f " + Path

	log.Printf("[INFO]CMD  command %+v opts %+v ", PGDumpCmd, options)

	cmd := exec.Command(PGDumpCmd, options)
	log.Printf("[INFO]CMD  obj  %+v ", cmd)

	err := cmd.Run()

	if err != nil {
		log.Printf("[INFO]CMD  Error %+v ", err)
	}


возвращает "Exit Status 1"

хотя если скопипастить вывод отсюда log.Printf("[INFO]CMD command %+v opts %+v ", PGDumpCmd, options) и просто выполнить из консоли, то все нормально работает.

В чем может быть дело?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
У вас команде передаётся только один флаг, представляющий из себя конкатенацию всех флагов.
Надо их отправлять отдельно.
exec.Command("pgdump", "-h", opts.PostgresHost, "-p", opts.PostgresPort, "-U", opts.PostgresUsername, "-d", dbname, "-w", "Fc", "-f ", Path)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы