В соответствии с вашим разговором с @steeldriver в комментариях, я предполагаю, что ваш пользователь не вышел из системы.
Самый простой способ убедиться, что supersecretuser вышел из системы, - это ввести
При этом я получаю вывод следующим образом:
mitch@quartz:~$ who
mitch :0 2014-09-08 09:49 (:0)
mitch pts/0 2014-09-08 13:18 (:0.0)
Я вижу только себя. Аналогично, набрав w в терминал, покажет мне, кто все зарегистрирован и что они делают:
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
mitch :0 :0 09:49 ?xdm? 29:08 0.11s init --user
mitch pts/0 :0.0 13:18 5.00s 0.06s 0.01s w
Вы можете остановить другого пользователя (SSU, который я назову его), с помощью следующая команда:
pkill -STOP -u SSU
Однако, по правде говоря, самым простым решением было бы просто перезагрузить систему, если это возможно.
Среди многих опций, включая циклы, которые используют cp и sleep, мы могли бы выбрать find с двумя флагами -exec для выполнения этих точных команд.
find ~/dir_1/ -type f -maxdepth 1 -exec cp {} ~/dir_2 \; -exec sleep 1 \;
Здесь указаны следующие опции:
~/dir_1, каталог происхождения, через который работает find. -type f получить только файлы -maxdepth 1 спускаться вниз на 1 уровень максимум в дереве каталогов; предотвращает спуск в подкаталоги -exec cp {} ~/dir_2 \; копировать текущий обработанный файл, назначенный параметром {}, на ~/dir_2. [F19] обозначает cp для обработки отдельного файла за раз, вместо того, чтобы вставлять как можно больше файлов в {}. Обратная косая черта в \; необходима, чтобы предотвратить неверное истолкование оболочки в качестве терминатора команд. exec sleep 1 \; выполняет sleep 1 за каждый текущий файл.Если у вас есть список файлов в файле, вы можете сделать:
xargs -I % --arg-file=input.txt sh -c 'cp % ~/dir_2/ ;sleep 1'
Параметры здесь:
~/dir_1, исходный каталог, с помощью которого работает find. --arg-file=input.txt читать аргументы для команды из определенного файла -type f получать только файлыВы можете использовать цикл for, например
for f in "/path/to/folder_1"/*; do
cp "$f" "/path/to/folder_2/"
sleep 1
done
. Для ясности это отформатировано на нескольких строках, но это работает как одна строка так же хорошо. Вы могли бы также превратить это в функцию:
delaycp(){
for f in "$1"/*; do
cp "$f" "$2"/
sleep 1
done
}
И использовать его как
delaycp "/path/to/folder1" "/path/to/folder2"
В качестве альтернативы, если вы хотите скопировать только определенные файлы, а не все, что * glob захватывает в каталоге, вы всегда можете использовать расширение пути, что-то вроде file{1..25} или иметь входной текстовый файл, что-то вроде этого input.txt:
/path/to/folder_1/file1
/path/to/folder_1/file2
/path/to/folder_1/file3
И оттуда использовать структуры while IFS= read -r line для чтения файла:
while IFS= read -r line || [ -n "$line" ]; do
cp "$line" "/path/to/folder_2/${line##*/}"
sleep 1
done < input.txt
Среди многих опций, включая циклы, которые используют cp и sleep, мы могли бы выбрать find с двумя флагами -exec для выполнения этих точных команд.
find ~/dir_1/ -type f -maxdepth 1 -exec cp {} ~/dir_2 \; -exec sleep 1 \;
Здесь указаны следующие опции:
~/dir_1, каталог происхождения, через который работает find. -type f получить только файлы -maxdepth 1 спускаться вниз на 1 уровень максимум в дереве каталогов; предотвращает спуск в подкаталоги -exec cp {} ~/dir_2 \; копировать текущий обработанный файл, назначенный параметром {}, на ~/dir_2. [F19] обозначает cp для обработки отдельного файла за раз, вместо того, чтобы вставлять как можно больше файлов в {}. Обратная косая черта в \; необходима, чтобы предотвратить неверное истолкование оболочки в качестве терминатора команд. exec sleep 1 \; выполняет sleep 1 за каждый текущий файл.Если у вас есть список файлов в файле, вы можете сделать:
xargs -I % --arg-file=input.txt sh -c 'cp % ~/dir_2/ ;sleep 1'
Параметры здесь:
~/dir_1, исходный каталог, с помощью которого работает find. --arg-file=input.txt читать аргументы для команды из определенного файла -type f получать только файлыВы можете использовать цикл for, например
for f in "/path/to/folder_1"/*; do
cp "$f" "/path/to/folder_2/"
sleep 1
done
. Для ясности это отформатировано на нескольких строках, но это работает как одна строка так же хорошо. Вы могли бы также превратить это в функцию:
delaycp(){
for f in "$1"/*; do
cp "$f" "$2"/
sleep 1
done
}
И использовать его как
delaycp "/path/to/folder1" "/path/to/folder2"
В качестве альтернативы, если вы хотите скопировать только определенные файлы, а не все, что * glob захватывает в каталоге, вы всегда можете использовать расширение пути, что-то вроде file{1..25} или иметь входной текстовый файл, что-то вроде этого input.txt:
/path/to/folder_1/file1
/path/to/folder_1/file2
/path/to/folder_1/file3
И оттуда использовать структуры while IFS= read -r line для чтения файла:
while IFS= read -r line || [ -n "$line" ]; do
cp "$line" "/path/to/folder_2/${line##*/}"
sleep 1
done < input.txt
Среди многих опций, включая циклы, которые используют cp и sleep, мы могли бы выбрать find с двумя флагами -exec для выполнения этих точных команд.
find ~/dir_1/ -type f -maxdepth 1 -exec cp {} ~/dir_2 \; -exec sleep 1 \;
Здесь указаны следующие опции:
~/dir_1, каталог происхождения, через который работает find. -type f получить только файлы -maxdepth 1 спускаться вниз на 1 уровень максимум в дереве каталогов; предотвращает спуск в подкаталоги -exec cp {} ~/dir_2 \; копировать текущий обработанный файл, назначенный параметром {}, на ~/dir_2. [F19] обозначает cp для обработки отдельного файла за раз, вместо того, чтобы вставлять как можно больше файлов в {}. Обратная косая черта в \; необходима, чтобы предотвратить неверное истолкование оболочки в качестве терминатора команд. exec sleep 1 \; выполняет sleep 1 за каждый текущий файл.Если у вас есть список файлов в файле, вы можете сделать:
xargs -I % --arg-file=input.txt sh -c 'cp % ~/dir_2/ ;sleep 1'
Параметры здесь:
~/dir_1, исходный каталог, с помощью которого работает find. --arg-file=input.txt читать аргументы для команды из определенного файла -type f получать только файлыВы можете использовать цикл for, например
for f in "/path/to/folder_1"/*; do
cp "$f" "/path/to/folder_2/"
sleep 1
done
. Для ясности это отформатировано на нескольких строках, но это работает как одна строка так же хорошо. Вы могли бы также превратить это в функцию:
delaycp(){
for f in "$1"/*; do
cp "$f" "$2"/
sleep 1
done
}
И использовать его как
delaycp "/path/to/folder1" "/path/to/folder2"
В качестве альтернативы, если вы хотите скопировать только определенные файлы, а не все, что * glob захватывает в каталоге, вы всегда можете использовать расширение пути, что-то вроде file{1..25} или иметь входной текстовый файл, что-то вроде этого input.txt:
/path/to/folder_1/file1
/path/to/folder_1/file2
/path/to/folder_1/file3
И оттуда использовать структуры while IFS= read -r line для чтения файла:
while IFS= read -r line || [ -n "$line" ]; do
cp "$line" "/path/to/folder_2/${line##*/}"
sleep 1
done < input.txt
Вот решение parallel, дайте аргументы parallel с ::: точно так же, как с cp, или используйте список файлов:
parallel -j1 'cp {} /path/to/dir2/;sleep 1' ::: /path/to/dir1/* # or
parallel -j1 'cp {} /path/to/dir2/;sleep 1' :::: /path/to/file_list.txt
Опция -j сообщает parallel запускать только задание 1 одновременно, а не выполнять задания параллельно, одиночные кавычки просто содержат сценарий, где {} заменяется текущим обрабатываемым файлом и ::: ] или :::: ввести список аргументов или файл (ы) соответственно. См. [F14] для гораздо большего.
find обеспечивает удобный способ запуска команд по выводам, например. чтобы скопировать каждый файл .log в и под текущим каталогом:
find -name "*.log" -exec sh -c 'cp "$0" /path/to/dir2/;sleep 1' "{}" \;
Вот решение parallel, дайте аргументы parallel с ::: точно так же, как с cp, или используйте список файлов:
parallel -j1 'cp {} /path/to/dir2/;sleep 1' ::: /path/to/dir1/* # or
parallel -j1 'cp {} /path/to/dir2/;sleep 1' :::: /path/to/file_list.txt
Опция -j сообщает parallel запускать только задание 1 одновременно, а не выполнять задания параллельно, одиночные кавычки просто содержат сценарий, где {} заменяется текущим обрабатываемым файлом и ::: ] или :::: ввести список аргументов или файл (ы) соответственно. См. [F14] для гораздо большего.
find обеспечивает удобный способ запуска команд по выводам, например. чтобы скопировать каждый файл .log в и под текущим каталогом:
find -name "*.log" -exec sh -c 'cp "$0" /path/to/dir2/;sleep 1' "{}" \;
Вот решение parallel, дайте аргументы parallel с ::: точно так же, как с cp, или используйте список файлов:
parallel -j1 'cp {} /path/to/dir2/;sleep 1' ::: /path/to/dir1/* # or
parallel -j1 'cp {} /path/to/dir2/;sleep 1' :::: /path/to/file_list.txt
Опция -j сообщает parallel запускать только задание 1 одновременно, а не выполнять задания параллельно, одиночные кавычки просто содержат сценарий, где {} заменяется текущим обрабатываемым файлом и ::: ] или :::: ввести список аргументов или файл (ы) соответственно. См. [F14] для гораздо большего.
find обеспечивает удобный способ запуска команд по выводам, например. чтобы скопировать каждый файл .log в и под текущим каталогом:
find -name "*.log" -exec sh -c 'cp "$0" /path/to/dir2/;sleep 1' "{}" \;