Насколько мне нравится Оли (это много!), я не согласен с ним в команде find. Мне не нравится. Команда
Возьмем, к примеру, эту простую команду:
$ time find / -type f -name "mail-transport-agent.target"
find: ‘/lost+found’: Permission denied
find: ‘/etc/ssmtp’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
(... SNIP ...)
find: ‘/run/user/997’: Permission denied
find: ‘/run/sudo’: Permission denied
find: ‘/run/systemd/inaccessible’: Permission denied
real 3m40.589s
user 0m4.156s
sys 0m8.874s
Она занимает три минут для find для поиска всего, начиная с /. По умолчанию появляются сообщения об ошибках, и вы должны искать их, чтобы найти то, что ищете. Тем не менее, лучше, чем grep искать весь диск для строки, которая занимает 53 часа: `grep`ing всех файлов для строки занимает много времени
Я знаю, что могу играть с командой find параметры, чтобы он работал лучше, но здесь указывается количество времени, которое требуется для выполнения.
Теперь давайте использовать locate:
$ time locate mail-transport-agent.target
/lib/systemd/system/mail-transport-agent.target
real 0m0.816s
user 0m0.792s
sys 0m0.024s
Команда три минуты занимает менее секунды!
] Правда, команда updatedb, которая обновляет базу данных локации, запускается только один раз в день по умолчанию. Вы можете запустить его вручную, прежде чем искать только что добавленные файлы:
$ time sudo updatedb
real 0m3.460s
user 0m0.503s
sys 0m1.167s
Хотя это займет 3 секунды, оно мало по сравнению с 3 + минутами команды find.
[d16 ] Я обновил свой sudo crontab -e, чтобы включить строку внизу:# m h dom mon dow command
0 0 1 * * /bin/journalctl --vacuum-size=200M
*/5 * * * * /usr/bin/updatedb
Теперь каждые пять минут updatedb запускаются, а база команд команд locate почти всегда обновляется .
Вы можете вывести вывод locate в другие команды. Если, например, вы хотите использовать атрибуты файлов, которые вы можете использовать:
$ locate mail-transport-agent.target | xargs stat
File: '/lib/systemd/system/mail-transport-agent.target'
Size: 473 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 667460 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-03-31 18:11:55.091173104 -0600
Modify: 2017-10-27 04:11:45.000000000 -0600
Change: 2017-10-28 07:18:24.860065653 -0600
Birth: -
Я отправил этот ответ, чтобы показать скорость и удобство использования locate. Я попытался решить некоторые из коротких команд, отмеченных другими.
Команда find должна пройти всю структуру каталогов, чтобы найти файлы. Команда locate имеет свою собственную базу данных, которая сравнивает ее с молниеносной скоростью.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME /Common
chmod g+s /Common
setfacl -d -R -m group:YOUR_GROUP_NAME:rwx /Common
setfacl -R -m group:YOUR_GROUP_NAME:rwx /Common
С разрешениями файловой системы ACL не имеет значения. Ваша программа может устанавливать права на файловую систему (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки применяется только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME /Common
chmod g+s /Common
setfacl -d -R -m group:YOUR_GROUP_NAME:rwx /Common
setfacl -R -m group:YOUR_GROUP_NAME:rwx /Common
С разрешениями файловой системы ACL не имеет значения. Ваша программа может устанавливать права на файловую систему (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки применяется только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME / Common chmod g + s / Common setfacl -d -R -m group: YOUR_GROUP_NAME: rwx / Common setfacl -R -m group: YOUR_GROUP_NAME: rwx / Common
С правами доступа к файловой системе ACL не имеет значения. Ваша программа может устанавливать права файловой системы (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки задано только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME /Common
chmod g+s /Common
setfacl -d -R -m group:YOUR_GROUP_NAME:rwx /Common
setfacl -R -m group:YOUR_GROUP_NAME:rwx /Common
С разрешениями файловой системы ACL не имеет значения. Ваша программа может устанавливать права на файловую систему (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки применяется только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME / Common chmod g + s / Common setfacl -d -R -m group: YOUR_GROUP_NAME: rwx / Common setfacl -R -m group: YOUR_GROUP_NAME: rwx / Common
С правами доступа к файловой системе ACL не имеет значения. Ваша программа может устанавливать права файловой системы (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки задано только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME / Common chmod g + s / Common setfacl -d -R -m group: YOUR_GROUP_NAME: rwx / Common setfacl -R -m group: YOUR_GROUP_NAME: rwx / Common
С правами доступа к файловой системе ACL не имеет значения. Ваша программа может устанавливать права файловой системы (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки задано только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME / Common chmod g + s / Common setfacl -d -R -m group: YOUR_GROUP_NAME: rwx / Common setfacl -R -m group: YOUR_GROUP_NAME: rwx / Common
С правами доступа к файловой системе ACL не имеет значения. Ваша программа может устанавливать права файловой системы (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки задано только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME / Common chmod g + s / Common setfacl -d -R -m group: YOUR_GROUP_NAME: rwx / Common setfacl -R -m group: YOUR_GROUP_NAME: rwx / Common
С правами доступа к файловой системе ACL не имеет значения. Ваша программа может устанавливать права файловой системы (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки задано только имя группы групп, но не разрешений.
Если вы хотите получить определенные разрешения для каждого файла в папке, использование ACL - это, вероятно, самый надежный способ сделать это:
chgrp YOUR_GROUP_NAME / Common chmod g + s / Common setfacl -d -R -m group: YOUR_GROUP_NAME: rwx / Common setfacl -R -m group: YOUR_GROUP_NAME: rwx / Common
С правами доступа к файловой системе ACL не имеет значения. Ваша программа может устанавливать права файловой системы (например, только чтение или отсутствие разрешений для группы).
В столбце SGID для папки задано только имя группы групп, но не разрешений.