Я пытаюсь переместить каталог Ubuntu 17.10.1 в корзину облачного хранилища Google через приложение node js. Я решил выполнить сценарий оболочки с использованием модуля дочернего процесса. Скрипт выглядит так.
#!/bin/bash
echo START $1
declare -r MODEL_NAME=$1
declare -r PROJECT_ID=XXX-XXXX
declare -r JOB_NAME="${MODEL_NAME}_$(date +%Y%m%d_%H%M%S)"
declare -r BUCKET_NAME="gs://XXX-XXXX-mlengine"
declare -r GCS_PATH="$BUCKET_NAME/$JOB_NAME"
gsutil -m cp -r ./training/$MODEL_NAME $GCS_PATH
echo ALL DONE!
Это работает должным образом при вызове с терминала.
Когда я вызываю его из своего приложения узла, он говорит, что не может найти gsutil, и возвращает ошибку. Я использую execFile child_process для внешней оболочки. Если я закомментирую строку gsutil, все будет хорошо. Я безуспешно пробовал использовать "ждать". Были произведены предыдущие попытки с модулем child_proccess_promise и сообщение об ошибке, в котором говорилось, что он не может найти gsutil.
const child = execFile('tensor_flow/file_process.sh', [trainingName], (error, stdout, stderr) => {
if (error) console.log(error);
if (stderr) console.log(stderr);
if (stdout) console.log(stdout);
});
Это вызывает следующие сообщения об ошибках:
tensor_flow/file_process.sh: line 12: gsutil: command not found
training-prep.js:26
tensor_flow/file_process.sh: line 14: wait: `PID': not a pid or valid job spec
START T2
training-prep.js:27
ALL DONE!
Любая помощь или понимание будут оценены или ... если бы вы могли указать мне на «переместить каталог в корзину» напрямую через узел, я хотел бы знать об этом.
Спасибо, JJ
PS. Я выполнил все вышеперечисленное в ходе этих усилий, и я сделал это с и без материала wait / PID.
gsutil: command not found
. Возможно, потому что (1) gsutil не существует на сервере Google Cloud или (2) путь не найден. Если 2, вам необходимо указать абсолютный путь к gsutil. - person ariefbayu   schedule 08.02.2018