ホームページ > バックエンド開発 > Golang > Go で sudo コマンドを実行すると、exec.Command() が終了ステータス 1 を返すのはなぜですか?

Go で sudo コマンドを実行すると、exec.Command() が終了ステータス 1 を返すのはなぜですか?

Patricia Arquette
リリース: 2024-11-27 13:45:10
オリジナル
633 人が閲覧しました

Why Does `exec.Command()` Return Exit Status 1 When Running `sudo` Commands in Go?

Go での Os Exec Sudo Command

背景

Go とゴルーチンの探索中、ユーザーはでコマンドを実行すると問題が発生する可能性があります。形式:

sudo find /folder -type f | while read i; do sudo -S chmod 644 "$i"; done
ログイン後にコピー

質問

  • コマンドが「終了ステータス 1」を返すのはなぜですか?
  • より詳細な情報を取得する方法エラーmessage?

Answer

  • 終了ステータスの原因 1: exec.Command() 関数は指定されたプログラムを実行します直接。ただし、指定されたコマンドには、シェル スクリプトを介して接続された複数のプログラムが含まれます。シェル スクリプトを実行するには、次の構文を使用します:
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
ログイン後にコピー
  • 詳細なエラー メッセージ: ターミナルでコマンドを直接実行して、より詳細なエラー メッセージを取得します。失敗した場合は、ターミナル出力でエラー メッセージがないか確認してください。

コードの変更

変更されたコードは次のとおりです:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("/bin/sh", "-c", "sudo find /folder -type f | while read i; do sudo -S chmod 644 \"\"; done")
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Printf("Error: %s\nOutput: %s", err, out)
    }
}
ログイン後にコピー

以上がGo で sudo コマンドを実行すると、exec.Command() が終了ステータス 1 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート