Если у вас есть root-доступ, вы можете изменить режим чтения / записи с помощью.
$ sudo chmod 777 Private.file // Он даст вам все права на чтение, запись и выполнение.
А также, если хотите, вы тоже можете сменить владельца.
$ sudo chown Боб: Боб Privat.file // он изменит владельца файла, и теперь владельцем является Боб
Дополнительные сведения
$ man chmod
$ man chown
Как указано , вы не можете использовать ps
в несуществующем -процессе.
Если у вас bash
поддерживает ассоциативные массивы:
declare -A jobinfo
# collect job information
joblist=( $(jobs -p) )
for pid in "${joblist[@]}"; do
jobinfo["$pid"]="$( ps -p "$pid" -o args= )"
done
# later...
# wait for jobs
err=0
for pid in "${joblist[@]}"; do
if ! { wait "$pid" || ! (( code=$? )); }; then
printf 'Got non-zero exit status (%d) from PID %d: %s\n' \
"$code" "$pid" "${jobinfo[$pid]}"
err=1
fi
done
# exit 0 if all was good, exit 1 otherwise
exit "$err"
Здесь я собираю все необходимые данные, прежде чем начать ждать завершения работы. Я также жду завершения всех заданий, чтобы пользователь получил информацию не только о первом неудачном задании.
Без использования ассоциативных массивов (должно работать по умолчанию bash
в macOS):
# collect job information
joblist=( $(jobs -p) )
for pid in "${joblist[@]}"; do
jobinfo+=( "$( ps -p "$pid" -o args= )" )
done
# later...
err=0
i=0
for pid in "${joblist[@]}"; do
if ! { wait "$pid" || ! (( code=$? )); }; then
printf 'Got non-zero exit status (%d) from PID %d: %s\n' \
"$code" "$pid" "${jobinfo[$i]}"
err=1
fi
i=$(( i + 1 ))
done
exit "$err"
Если ваша ОС (, например. Linux )имеет каталог /proc, вы можете получить всю необходимую информацию из /proc/$PID
for PID in $(jobs -p); do
dosomethingwith /proc/$PID/ # please take a look at what it contents ;-)
done
В тот момент, когда вы запускаете команду ps
, процесс уже завершился (, вы обрабатываете его код возврата, верно?)
Просто измените логику, чтобы вы запускали команду ps
раньше в скрипте, перед wait
и сохраняли ее в переменной:
for job in $(jobs -p); do
process_info=$(ps -p "${job}" -o args=)
wait "${job}" || {
code=$?
echo "Job running [${process_info}] failed with exit code ${code}." >&2
exit 1
}
done