Что именно означает
, для которого процесс имеет разрешение на отправку сигнала
?
На это есть ответ прямо на справочной странице:
Чтобы процесс имел разрешение на отправку сигнала, он должен быть либо привилегированным, либо реальный или эффективный идентификатор пользователя отправляющего процесса должен совпадать с реальным или сохраненным set-user. -ID целевого процесса. В случае SIGCONT достаточно, чтобы отправляющий и принимающий процессы принадлежали к одному и тому же сеансу.
Как проверить, какие процессы получат сигнал?
Вы можете пройтись по списку процессов и попытаться уничтожить каждый из них с помощью сигнала 0 (сигнал пробного запуска). Это скажет вам, было ли у вас разрешение на отправку реального сигнала.
Два вопроса из первоначальной постановки вопроса:
-exec
, должна быть завершена с помощью ;
. rsync
. Это то, что я думаю, вы можете захотеть:
find components -iname "*.html" -exec rsync -R {}./build/ ';'
Чтобы скопировать файл с помощью rsync
, вам нужно будет указать, куда он должен быть скопирован в . Здесь я предположил, что вы хотите скопировать все найденные файлы в ./build/
.
После обновления вопроса:
Команда, которую выполняет find
, должна заканчиваться символом ;
-, защищенным от оболочки. Правильный способ защитить ;
от командной оболочки — указать его в кавычках с помощью \;
или ';'
¹.
Поскольку вы используете \\;
, вы «отменяете» цитирование ;
и вместо этого процесс find
просто увидит завершение \
. Поскольку он не видит ;
, он будет жаловаться на отсутствие аргументов.
Вы где-то упомянули npm
. Это менеджер пакетов для JavaScript. Поскольку вы упомянули об этом, это наводит меня на мысль, что вы запускаете find
не из командной строки, а из какого-то сценария. Цитирование может (потенциально )работать по-разному внутри скрипта в зависимости от конкретных грамматических и синтаксических правил этого скриптового языка.
Чтобы правильно решить эту проблему, было бы очень полезно увидеть фактический вызов find
в контексте скрипта, который его вызывает.
До тех пор, пока вопрос не будет дополнен этой информацией, ответ, который я здесь дал, будет настолько точным, насколько это возможно.
¹ (или ";"
или более экзотические формы, такие как $';'
или $'\u003b'
в зависимости от корпуса, ';'
является наиболее портативным)
Правильный формат find
—:
find components -iname "*.html" -exec rsync -R {} \;
При запуске из стандартной MS -командной строки DOS с использованием cygwin двоичного файла find.exe может случиться так, что вы не не нужно избегать финала ' ; ' (поскольку не sh/bash/... интерпретирует командную строку, а DOS, для которого ';' не является специальным символом):
Я бы попробовал:
find components -iname "*.html" -exec rsync -R {}./build/ ;