Обычно, каждый был бы Ctrl+C
на оболочке вызова / уничтожают процесс от родительского процесса путем отправки сигнала через Process.destroy()
(Java).
Аккуратный инструмент для таких задач pkill
, который может уничтожить процессы шаблоном, например.
pkill ping
Обратите внимание, что обычный пользователь не может уничтожить другого пользовательские процессы, поэтому удостоверьтесь, что Вы зарегистрированы на правильном компьютере с правильным идентификатором пользователя.
Бонусная подсказка: использовать pgrep -fl ping
чтобы перечислить соответствие процессам, удостовериться, Вы хотите уничтожить всех их - потому что, работая как корень, pkill ssh
также уничтожит Ваш sshd
и может заблокировать Вас. Так же в особенности, когда выполнение как корень - которого необходимо избежать так или иначе - проверяет дважды с pgrep
.
Вы можете сделать это с помощью find (1)
и cpio (1)
:
find /home -path './my-folder/test[34].txt' -prune -o \( -type f -print \) | \
cpio -pdamv /some/other/dir
Как насчет
cp !(my-folder) /foo
Пример:
$ find . -type f
./my-folder/test4.txt
./my-folder/test3.txt
./test2.txt
./test1.txt
$ echo cp !(my-folder) /foo
cp test1.txt test2.txt /foo
$
Вы не можете сделать это только с помощью cp
, сокращая f, указывая файлы для копирования. Создание частичных копий выходит за рамки возможностей cp.
Rsync - очевидный инструмент для работы, и он очень широко распространен.
Если у вас есть только инструменты POSIX, вы можете использовать pax . Вы можете пропустить файлы, переписав их путь в пустую строку.
cd /home && pax -rw -pe -s'~^\./my-folder/test[34]\.txt$~~' . /path/to/destination
Если у вас есть только минимальный сервер Linux без pax, посмотрите, доступны ли его традиционные эквиваленты cpio или tar. См. ответ lcd047 для примера cpio. С помощью GNU tar вы можете сделать
mkdir /path/to/destination
tar c -C /home --exclude='./my-folder/test[34].txt' | tar x -C /path/to/destination