Самый легкий способ обойти его состоит в том, чтобы установить полномочия доли на сервере, чтобы быть миром, перезаписываемым (0777). На клиенте (Ваше встроенное устройство) устанавливает umask пользователя на 0000. Также удалите no_root_squash
опция. Вы хотите root_squash
на. Этот корень поворота в nobody
пользователь. Можно затем считать и записать любой файл, созданный на доле как любой пользователь в системе сервера.
ПРЕДУПРЕЖДЕНИЕ
То, что я описал, является чрезвычайно небезопасной конфигурацией, таким образом, я высоко препятствую выполнению этого для чего-либо кроме закрытой, частной сети.
Лучший способ сделать это (которые предотвращают уничтожение того же PID для другого процесса):
function kill_gracefully() {
pid=$1; [[ -z $pid ]] && return; # check arg
kill $pid; # kill once
i=0;
while kill -0 $pid; do # while pid is alive
sleep 0.1;
((i+=1)); # count ++
if [[ $i -gt 10 ]];then # wait for 10 secs at most
kill -9 $pid; # kill if timeout
break;
fi;
done;
}
Вышеупомянутый метод может перестать работать в тяжелой загруженной системе (это часто разветвляется),
kill -- "$pid"; sleep 10; kill -s KILL -- "$pid"
Если на debian основывал систему:
echo "$pid" | start-stop-daemon --pidfile /dev/stdin --stop --oknodo --name "$process_name" --user "$user" --retry 10
Который позволяет Вам указывать соответствие критериям (как имя пользователя и название команды), чтобы не уничтожать неправильный процесс в случае, если pid был снова использован.
sleep
, возможно с ps
чтобы удостовериться, что процесс все еще, и pid все еще присвоен тому же процессу.
– rahmu
31.10.2012, 15:58
execve(2)
и ppid
также, если родитель умирает. Посмотрите мой start-stop-daemon
ответ для проверки имени пользователя и названия команды.
– Stéphane Chazelas
01.11.2012, 09:07