Если Вы хотите узнать то, что текущий pid MySQL - Вы, может найти его в файле/var/run/mysqld/mysqld.pid (Thats в Ubuntu мог быть differnt в других дистрибутивах).
Я должен дать Kyle Brandt полный кредит выше. Так, если Вам нравится этот ответ ниже, нажмите треугольник Up на его сообщение для подъема его состояния.
Однако я улучшил его стандартную программу и чувствовал это моя обязанность отправить его здесь и отметить его как окончательный ответ.
Все, что я добавил к стандартной программе Kyle, было, гарантируют, что мы только касаемся домашнего dir, таким образом строка со звездочками в ней. Затем я удостоверяюсь, что этот домашний dir на самом деле все еще существует. После этого я делаю показанный оператор. И точно так же, как Kyle сказал - удаляют ключевое слово "эха", и оно на самом деле проведет задачу. Затем я добавил "-R" на показанном, чтобы заставить его работать рекурсивно в случае, если проблема могла бы быть глубже в домашний dir.
#!/bin/bash
while IFS=':' read -r login pass uid gid uname homedir comment; do
if [[ "$homedir" = **/home/** ]]; then
if [ -d "$homedir" ]; then
echo chown -R $uid:$gid "$homedir";
fi
fi
done < /etc/passwd
Я думаю способ, которым Вы спрашиваете, отчасти назад. Вы не хотите брать каждую папку и затем находить пользователя, скорее Вы хотите взять пользователя и найти их домашнюю папку.
#!/bin/bash
while IFS=':' read -r login pass uid gid uname homedir comment; do
echo chown $uid:$gid "$homedir";
done < /etc/passwd
Необходимо будет удалить эхо, конечно, и необходимо будет выполнить это с корневыми полномочиями. Я также всегда рекомендую некоторое время цикл вместо для цикла ls
самостоятельно. Можно сохранить этот цикл для того, чтобы сделать что-либо с /etc/passwd
.
#!/bin/bash
for f in $( ls /home/ );
do chown -R $f:yourgroup /home/$f
done
Нет никакой исправности, регистрируясь в этом, и я записал это без любого тестирования, так быть осторожным.
(BTW, требованию "никаких скрытых файлов или папок" будет отвечать то, что скрытый файл в Unix является просто регулярным файлом с a. перед ним, и .username не будет действительным пользователем для показанного).
Это могло бы помочь
#!/bin/bash
for file in `ls -a | grep -v '^\.'`
do
if [[ -d $file ]]
then
fowner=`ls -ld $file | nawk '{print $3}'`
fgroup=`ls -ld $file | nawk '{print $4}'`
chown -R $fowner:$fgroup $file
fi
done
Использовать getent
для получения имени пользователя, названия группы и корневого каталога каждого пользователя, идентификатор пользователя которого больше, чем или равен 500, и применяют их через chown -R
. Кроме того, в наше время это user:group
.