При попытке отмонтировать каталог получаем ошибку занятости как найти какой pid держит каталог

Если возможно, позвольте нам найти / идентифицировать занятый процесс, убить этот процесс и затем отключить общий ресурс / диск samba, чтобы минимизировать ущерб: lsof | grep »(или любое другое подключенное устройство) pkill target_process (убивает занятую процедуру по имени | kill PID | killall target_process)

Чем занято устройство Umount?

Есть много причин, по которым устройство занято. Иногда выполняются процессы с открытыми блокировками, иногда есть другие каталоги, смонтированные поверх / mnt / dir. [X] запущенные процессы на смонтированных томах. …

Запустите sudo lsof / media / KINGSTON, чтобы увидеть все процессы пользователей. Столбец COMMAND показывает имя исполняемого файла программы, а столбец PID показывает ID процесса.

Что такое ленивое отключение?

С помощью ленивого отключения вы можете безопасно отключить том во время работы программного обеспечения, подключить другой том к той же точке монтирования и дать команду программному обеспечению повторно открыть файлы.

Как вы монтируете и размонтируете диск в Linux?

Используйте команду umount, чтобы отключить любую смонтированную файловую систему в вашей системе. Запустите команду umount с именем диска или именем точки монтирования, чтобы размонтировать текущий смонтированный диск.

Как вы монтируете дом?

Вы можете увидеть, какие процессы все еще используют ваш старый домашний каталог (или что-то еще в домашней файловой системе), запустив fuser / home или lsof / home. Как только вы убьете эти процессы, вы сможете размонтировать / home. Вы можете использовать fuser -k / home, чтобы убить их всех (внимательно проверьте, что они собой представляют, прежде чем делать это!).

Мы можем размонтировать?

Вы не можете его размонтировать, потому что он уже используется. Из сообщения об ошибке / dev / sda1 — это расположение вашего корневого каталога /. … Затем вы сможете изменить размер (теперь неиспользуемого) корневого раздела. Перед изменением размера обязательно сделайте резервную копию всего!

Как мне отключить форсировку в Linux?

Вы можете использовать umount -f -l / mnt / myfolder, и это решит проблему.

  1. -f — принудительно размонтировать (в случае недоступности системы NFS). (Требуется ядро ​​2.1.…
  2. -l — Ленивое отключение. Отсоедините файловую систему от иерархии файловой системы сейчас и очистите все ссылки на файловую систему, как только она больше не будет занята.

Как мне проверить, занят ли диск в Linux?

5 инструментов для мониторинга активности диска в Linux

  1. iostat. iostat можно использовать для непрерывного отчета о скорости чтения / записи диска и счетчиках за интервал. …
  2. iotop. iotop — это похожая на топ утилита для отображения активности диска в реальном времени. …
  3. dstat. dstat — это немного более удобная версия iostat, которая может отображать гораздо больше информации, чем просто пропускная способность диска. …
  4. наверху. …
  5. иопинг

Что делает команда LSOF в Linux?

lsof — это команда, означающая «список открытых файлов», которая используется во многих Unix-подобных системах для вывода списка всех открытых файлов и процессов, которые их открыли. Эта утилита с открытым исходным кодом была разработана и поддержана Виктором А.

Где в Linux находятся размонтированные диски?

Чтобы обратиться к списку разделов размонтированных разделов, есть несколько способов — lsblk, fdisk, parted, blkid. строки, которые имеют первый столбец, начинающийся с буквы s (потому что так обычно называются диски) и заканчивающийся числом (которые представляют разделы).

Как смонтировать путь в Linux?

Монтирование файлов ISO

  1. Начните с создания точки монтирования, это может быть любое место, которое вы хотите: sudo mkdir / media / iso.
  2. Подключите ISO-файл к точке монтирования, введя следующую команду: sudo mount /path/to/image.iso / media / iso -o loop. Не забудьте заменить / path / to / image. iso на путь к вашему файлу ISO.

23 сред. 2019 г.

Как смонтировать все разделы в Linux?

Добавить раздел диска в файл fstab

Чтобы добавить диск в файл fstab, вам сначала нужно получить UUID вашего раздела. Чтобы получить UUID раздела в Linux, используйте «blkid» с именем раздела, который вы хотите смонтировать. Теперь, когда у вас есть UUID для раздела диска, вы можете добавить его в файл fstab.

Open files

Processes with open files are the usual culprits. Display them:

lsof +f -- <mountpoint or device>

There is an advantage to using /dev/<device> rather than /mountpoint: a mountpoint will disappear after an umount -l, or it may be hidden by an overlaid mount.

fuser can also be used, but to my mind lsof has a more useful output. However fuser is useful when it comes to killing the processes causing your dramas so you can get on with your life.

List files on <mountpoint> (see caveat above):

fuser -vmM <mountpoint>

Interactively kill only processes with files open for writing:

fuser -vmMkiw <mountpoint>

After remounting read-only (mount -o remount,ro <mountpoint>), it is safe(r) to kill all remaining processes:

fuser -vmMk <mountpoint>

Mountpoints

The culprit can be the kernel itself. Another filesystem mounted on the filesystem you are trying to umount will cause grief. Check with:

mount | grep <mountpoint>/

For loopback mounts (thanks Stephen Kitt), also check the output of:

losetup -la

Anonymous inodes (Linux)

Anonymous inodes can be created by:

  • Temporary files (open with O_TMPFILE)
  • inotify watches
  • [eventfd]
  • [eventpoll]
  • [timerfd]

These are the most elusive type of pokemon, and appear in lsof‘s TYPE column as a_inode (which is undocumented in the lsof man page).

They won’t appear in lsof +f -- /dev/<device>, so you’ll need to:

lsof | grep a_inode

For killing processes holding anonymous inodes, see: List current inotify watches (pathname, PID).

inotify watches (Linux)

This comment explains why inotify shouldn’t prevent an unmount, but this note describes the situations in which it will:

an unmount can hang in the vx_softcnt_flush() call. The hang occurs because inotify watches increment the i_count variable and cause the v_os_hold value to remain elevated until the inotify watcher releases the hold.

Open files

Processes with open files are the usual culprits. Display them:

lsof +f -- <mountpoint or device>

There is an advantage to using /dev/<device> rather than /mountpoint: a mountpoint will disappear after an umount -l, or it may be hidden by an overlaid mount.

fuser can also be used, but to my mind lsof has a more useful output. However fuser is useful when it comes to killing the processes causing your dramas so you can get on with your life.

List files on <mountpoint> (see caveat above):

fuser -vmM <mountpoint>

Interactively kill only processes with files open for writing:

fuser -vmMkiw <mountpoint>

After remounting read-only (mount -o remount,ro <mountpoint>), it is safe(r) to kill all remaining processes:

fuser -vmMk <mountpoint>

Mountpoints

The culprit can be the kernel itself. Another filesystem mounted on the filesystem you are trying to umount will cause grief. Check with:

mount | grep <mountpoint>/

For loopback mounts (thanks Stephen Kitt), also check the output of:

losetup -la

Anonymous inodes (Linux)

Anonymous inodes can be created by:

  • Temporary files (open with O_TMPFILE)
  • inotify watches
  • [eventfd]
  • [eventpoll]
  • [timerfd]

These are the most elusive type of pokemon, and appear in lsof‘s TYPE column as a_inode (which is undocumented in the lsof man page).

They won’t appear in lsof +f -- /dev/<device>, so you’ll need to:

lsof | grep a_inode

For killing processes holding anonymous inodes, see: List current inotify watches (pathname, PID).

inotify watches (Linux)

This comment explains why inotify shouldn’t prevent an unmount, but this note describes the situations in which it will:

an unmount can hang in the vx_softcnt_flush() call. The hang occurs because inotify watches increment the i_count variable and cause the v_os_hold value to remain elevated until the inotify watcher releases the hold.

Как узнать, какие процессы препятствуют размонтированию устройства?


Иногда я хотел бы размонтировать USB устройство с umount /run/media/theDrive, но я получаю сообщение об drive is busyошибке.

Как узнать, какие процессы или программы обращаются к устройству?


Ответы:


Используйте, lsof | grep /media/whateverчтобы узнать, что использует крепление.

Кроме того, рассмотрите возможность umount -l(lazy umount), чтобы новые процессы не могли использовать диск во время очистки.





Большая часть времени, лучшая командой использования является Lsof ( « л я с т о авторучке й Ильза»).

lsof +f -- /media/usb0

где /media/usb0точка монтирования USB-накопителя или другой файловой системы для размонтирования. +f --говорит lsof обрабатывать последующий аргумент как точку монтирования; это обычно, но не всегда, управляет само по себе, так что это lsof /media/usb0тоже работает. Он находит открытые файлы (даже несвязанные), отображенные в память файлы, текущие каталоги и некоторые другие неясные варианты использования. Вам нужно будет выполнить команду от имени пользователя root, чтобы получить информацию о процессах других пользователей (и я думаю, что есть устройства, где lsofнужно запускать от имени пользователя root).

Есть способы, которые lsof не найдет; это необычно на съемных носителях. Они включают:

  • точки монтирования: вы не можете размонтировать, /fooесли /foo/barэто точка монтирования.
  • монтировать устройства: вы не можете размонтировать, /fooесли /foo/barэто смонтированное блочное устройство или обычный файл, смонтированный в цикле, или если это источник монтируемого подключения Linux.
  • Экспорт NFS: lsof не обнаружит, что дерево экспортируется сервером NFS ядра.

Еще одна команда, которая может использоваться в крайнем случае, — это fuser, который перечисляет только PID процессов с открытыми файлами на устройстве:

fuser -m /media/usb0


Вы можете использовать, lsofкак сказал Питер, или если вы уверены, что просто хотите убить все эти вещи и размонтировать его, вы, вероятно, можете сделать что-то вроде:

fuser -Mk /mnt/path
umount /mnt/path




Открытые файлы

Процессы с открытыми файлами являются обычными виновниками. Показать их:

lsof +f -- <mountpoint or device>

Преимущество использования /dev/<device>вместо /mountpoint: точка монтирования исчезнет после umount -lили может быть скрыта наложенным монтированием.

fuserТакже можно использовать, но на мой взгляд, lsofесть более полезный вывод. Однако fuserэто полезно, когда дело доходит до уничтожения процессов, вызывающих ваши драмы, чтобы вы могли продолжить свою жизнь.

Список файлов <mountpoint>(см. Предостережение выше):

fuser -vmM <mountpoint>

Интерактивно уничтожать только процессы с открытыми для записи файлами:

fuser -vmMkiw <mountpoint>

После перемонтирования только для чтения ( mount -o remount,ro <mountpoint>) можно (r) убить все оставшиеся процессы:

fuser -vmMk <mountpoint>

точки монтирования

Виновником может быть само ядро. Другая файловая система, смонтированная в той файловой системе, к которой вы пытаетесь umount, вызовет горе. Проверить с:

mount | grep <mountpoint>/

Для петлевых креплений ( спасибо Стивену Китту ) также проверьте вывод:

losetup -la

Анонимные иноды (Linux)

Анонимные иноды могут быть созданы:

  • Временные файлы ( openс O_TMPFILE)
  • Inotify часы
  • [Eventfd]
  • [Eventpoll]
  • [Timerfd]

Это самый неуловимый тип покемона, и появляются в lsof«s TYPEстолбец как a_inode(который без документов на lsofстранице человека ).

Они не появятся lsof +f -- /dev/<device>, поэтому вам нужно:

lsof | grep a_inode

Для процессов уничтожения, содержащих анонимные inode, смотрите: Список текущих наблюдений inotify (pathname, PID) .

inotify часы (Linux)

Этот комментарий объясняет, почему inotify не следует предотвращать размонтирование, но в этом примечании описываются ситуации, в которых он будет :

в vx_softcnt_flush()вызове может зависнуть размонтированный Зависание происходит из-за того, что часы inotify увеличивают i_countпеременную и заставляют v_os_hold valueзначение оставаться повышенным, пока наблюдатель inotify не освободит удержание.




Если вы используете GNOME, отключение через Nautilus отобразит сообщение о том, какой процесс все еще использует диск, и файл, который он использует.

альтернативный текст


Для (как минимум) OpenBSD:

$ fstat /mnt/mountpoint

Например (использование doasдля выполнения fstatот имени пользователя root, поскольку в противном случае мы видели бы только наши собственные процессы):

$ doas fstat /usr/ports
USER     CMD          PID   FD MOUNT        INUM MODE         R/W    SZ|DV NAME
_pbuild  make       15172   wd /usr/ports  3923598  drwxrwxr-x     r     1536 /usr/ports/
_pbuild  make       40034   wd /usr/ports  3923598  drwxrwxr-x     r     1536 /usr/ports/

В этом случае я не смогу размонтировать, /usr/portsпока пользователь _pbuildне закончит эти два makeпроцесса.


Это распространенная ошибка: вы можете использовать другого пользователя (либо root, либо любого другого пользователя), перейти в каталог подключенного устройства и выйти из системы под этим пользователем. Когда вы забудете, что оставили в этом каталоге, вы можете попытаться найти его, пока не ослепнете. lsofдействительно показывает оболочку, какой текущий каталог использует это устройство. Возможно, вы захотите снова ввести в качестве этого пользователя su, чтобы сменить каталог.


Вопросы для интервью системного администратора Linux/DevOps

Коллекция вопросов для собеседования linux сисадмина/devops. Не стесняйтесь добавлять свои через pull request’ы, issues или сообщением по электронной почте.

Содержание

  1. Участники
  2. Общие вопросы
  3. Простые вопросы о Linux
  4. Вопросы среднего уровня о Linux
  5. Сложные вопросы о Linux
  6. Вопросы экспертного уровня о Linux
  7. Вопросы по сетям
  8. Вопросы о MySQL
  9. Вопросы о DevOps практиках
  10. Забавные вопросы
  11. Время демо
  12. Другие ссылки

[⬆] Участники:

  • moregeek
  • typhonius
  • schumar
  • negesti
  • peter
  • andreashappe
  • quatrix
  • biyanisuraj
  • pedroguima
  • Ben
  • bharatnc

[⬆] Общие вопросы:

  • Что вы узнали за вчера/эту неделю?
  • Расскажите о предпочитаемом окружении разработчика/администратора. (OS, редактор, браузеры, инструменты и т.п.)
  • Расскажите о последнем проекте на Linux, который вы закончили.
  • Расскажите о самой большой неудаче, которую вы допустили [какой-то период времени] и как вы изменились на сегодняшний день. Что вы вынесли из этого опыта?
  • Почему мы должны выбрать вас?
  • Какую роль играет DNS в сети?
  • Что такое HTTP?
  • Что такое HTTP прокси и как он работает?
  • Опишите кратко как работает HTTPS?
  • Что такое SMTP? Расскажите кратко сценарий доставки сообщения через SMTP.
  • Что такое RAID? Что такое RAID0, RAID1, RAID5, RAID10?
  • Что такое резервная копия 0-го уровня? Что такое инкрементальная резервная копия?
  • Опишите иерархию файловой системы в Linux.

[⬆] Простые вопросы о Linux:

  • Какое имя и UID администратора?
  • Как посмотреть все файлы в каталоге, включая скрытые?
  • Какая команда в Unix/Linux удаляет каталог со всем его содержимым?
  • Какая команда в Unix/Linux показывает свободную/используемую память? Существует ли свободная память в Linux?
  • Как найти строку «my konfu is the best» в файлах каталога рекурсивно?
  • Как подключиться к удаленному серверу или что такое SSH?
  • Как получить все переменные окружения и как их можно использовать?
  • Я получил «command not found» при запуске ifconfig -a. Что может быть не так?
  • Что произойдет, если я нажму TAB-TAB?
  • Какая команда показывает доступное свободное пространство на диске в Unix/Linux?
  • Какие команды вы знаете, которые могут быть использованы для проверки DNS записей?
  • Какая команда Unix/Linux используется для изменения владельца файла, прав доступа к файлу?
  • Что делает команда chmod +x FILENAME?
  • Что означают права 0750 для файла?
  • Что означают права 0750 для каталога?
  • Как добавить пользователя без прав входа в систему?
  • Как добавить/убрать пользователя в/из группы?
  • Что такое bash алиас?
  • Как устеновить email для пользователя root?
  • Что делает Ctrl+c?
  • Что содержится в файле /etc/services?
  • Как перенаправить STDOUT и STDERR в bash?
  • Какая разница между UNIX и Linux?
  • В чем разница между Telnet и SSH?
  • Объясните три усредненных значения load average и что они означают? Какой командой можно посмотреть load average?
  • Можете назвать букву в нижнем регистре, которая не является валидной опцией для GNU ls?
  • Что такое модуль ядра Linux?
  • Расскажите по шагам как загрузить систему в однопользовательском режиме для решения проблем.
  • Расскажите по шагам как вы будете решать проблему с ошибкой 404 в веб-приложении, которое вы обслуживаете.

[⬆] Вопросы среднего уровня о Linux:

  • Что делают следующие команды и как вы из будете использовать?
  • tee
  • awk
  • tr
  • cut
  • tac
  • curl
  • wget
  • watch
  • head
  • tail
  • Что делает & в конце команды?
  • Что делает & disown в конце команды?
  • Что такое пакетный фильтр и как он работает?
  • Что такое виртуальная память?
  • Что такое swap и для чего он используется?
  • Что такое A-запись, NS-запись, PTR-запись, CNAME-запись, MX-запись?
  • Знаете ли вы еще какие-либо RR-записи и для чего они используются?
  • Что такое Split-Horizon DNS?
  • Что такое sticky bit?
  • Что делает установленный на файл immutable bit?
  • Какая разница между символическими и жесткими ссылками? Что произойдет если удалить символическую/жесткую ссылку?
  • Что такое inode и какая информация хранится в inode?
  • Как принудительно запустить проверку файловой системы при следующей перезагрузке?
  • Что такое SNMP и для чего он используется?
  • Что такое уровень запуска и как узнать текущий?
  • Что такое SSH port forwarding?
  • Какая разница между локальным и удаленным пробросом портов SSH?
  • Какие шаги надо предпринять, чтоб добавить пользователя в систему не используя утилиты useradd/adduser?
  • Что такое MAJOR и MINOR нумерация спец. файлов?
  • Опишите команду mknod и когда она используется?
  • Опишите сценарий, когда вы можете получить ошибку «filesystem is full», но ‘df’ показывает наличие свободного места.
  • Опишите сценарий, когда вы удаляете файл,но ‘df’ не показывает, что место освободилось.
  • Опишите как работает ‘ps’.
  • Что случиться, если процесс-потомок умрет и не будет процесса-родителя, ожидающего его и что в этом плохого?
  • Объясните кратко каждое из состояний процесса.
  • Как узнать какой процесс слушает указанный порт?
  • Что такое зомби-процесс и какова его причина возникновения?
  • Вы запускаете bash скрипт и хотите видеть его вывод на экране и одновременно сохранить этот вывод в файл. Как это сделать?
  • Объясните, что делает echo «1» > /proc/sys/net/ipv4/ip_forward.
  • Кратко объясните, какие шаги надо предпринять, чтоб создать и установить сертификат для сайта https://foo.example.com.
  • Можно ли создать несколько HTTPS виртуальных хостов, используя один IP?
  • Что такое wildcard сертификат?
  • Какие типы файловых систем в Linux вам известны?
  • В чем разница между процессом и потоком? И родительским и потомком процессами после системного вызова fork?
  • В чем разница между exec и fork?
  • Для чего используется nohup?
  • В чем разница между этими двумя командами?
  • myvar=hello
  • export myvar=hello
  • Как много NTP севреров настроено в вашем локальном ntp.conf?
  • Что означает колонка ‘reach’ в выводе ntpq-p?
  • Вам необходимо обновить ядро на 100-1000 серверах, как вы будете это делать?
  • Как можно получить Host, Channel, IS, LUN для SCSI диска?
  • Как можно ограничить использование памяти для процесса?
  • What is bash quick substitution/caret replace(^x^y)?
  • Какие вы знаете альтернативные оболочки? Какую вы используете?
  • Что такое tarpipe (или, как вы будете копировать все, включая жесткие ссылки и специальные файлы, с одного сервера на другой)?
  • Как можно проверить, что пакет httpd уже был установлен?
  • Как посмотреть содержимое установочного пакета?
  • Как вы определите какой пакет лучше: openssh-server-5.3p1-118.1.el6_8.x86_64 or openssh-server-6.6p1-1.el6.x86_64?
  • Как вы можете объяснить мне разницу между хранилищем, основанным на блоках и объектах?

[⬆] Сложные вопросы о Linux:

  • Что такое туннель и как вы можете обойти http прокси?
  • В чем разница между IDS и IPS?
  • Какие горячие клавиши вы используете регулярно?
  • Что такое Linux Standard Base?
  • Что такое атомарная операция?
  • Вы только что настроили http сервер, который не запустился после рестарта. Что вы будете делать?
  • Какие ключи содержаться в ~/.ssh/authorized_keys и для чего нужен этот файл?
  • Я добавил свой публичный ключ в authorized_keys, но до сих пор получаю запрос пароля. Что может быть не так?
  • Вы когда-нибудь собирали RPM, DEB или solaris пакеты?
  • Что сделает :(){ :|:& };: с вашей системой?
  • Как можно перехватить Linux сигнал из скрипта?
  • Можно ли перехватить SIGKILL?
  • Что происходит, когда ядро Linux запускает OOM killer и как он выбирает какой процесс необходимо убить в первую очередь?
  • Опишите процесс загрузки Linux с максимально возможным количеством деталей, начиная с момента включения компьютера и заканчивая получением приглашения командной строки.
  • Что такое закрытие в chroot?
  • При попытке отмонтировать каталог получаем ошибку занятости, как найти какой PID держит каталог?
  • Что такое LD_PRELOAD и когда он используется?
  • Вы запустили бинарник и ничего не произошло. Как вы будете искать проблему?
  • Что такое cgroups? Можете ли вы указать сценарий, когда это может быть использовано?
  • Как можно удалить файл, имя которого содержит непечатные символы?
  • Как можно увеличить/уменьшить приоритет процесса в Linux?
  • Что такое run-levels в Linux?

[⬆] Вопросы экспертного уровня о Linux:

  • Запущенный процесс получает EAGAIN: Resource temporarily unavailable при чтении соккета. Как можно закрыть этот плохой соккет/файловый дескриптор без убивания процесса?

[⬆] Вопросы по сетям:

  • Что такое localhost и почему ping localhost может не работать?
  • В чем сходство между «ping» и «traceroute»? Как traceroute находит промежуточные хосты?
  • Какая команда можно использовать для поиска всех открытых портов и/или соединений с соккетами на машине?
  • Валидный ли IP адрес 300.168.0.123?
  • Какие IP диапазоны/подсети являются частными или не маршрутизируемыми (RFC 1918)?
  • Что такое VLAN?
  • Что такое ARP и для чего используется?
  • В чем разница между TCP и UDP?
  • Какова цель шлюза по умолчанию?
  • Какая команда используется для просмотра таблицы маршрутизации в Linux?
  • TCP-соединение в сети может быть однозначно определено четырьмя вещами. Что это за вещи?
  • Когда клиент использует бразер для подключения к веб-серверу, какие порты источника и назначения будут у этого соединения?
  • Как можно добавить IPv6 адрес для конкретного интерфейса?
  • Вы добавили IPv4 и IPv6 адреса на eth0 интерфейс. Ping на v4 адрес работает, но ping на v6 адрес дает ответ sendmsg: operation not permitted. Что может быть не так?
  • Что такое SNAT и когда он должен быть использован?
  • Объясните, как можно войти по ssh на Linux сервер, который сбрасывает (DROP) все новые входящие пакеты, используя SSH туннель.
  • Как вы будете противодействовать DDoS атаке?
  • Как можно посмотреть содержимое ip пакета?
  • Что такое IPoAC (RFC 1149)?

[⬆] Вопрос о MySQL:

  • Как создать пользователя?
  • Как предоставить права пользователю?
  • В чем разница между ‘left’ и ‘right’ join?
  • Объясните кратко разницу между InnoDB и MyISAM.
  • Зачем надо запускать «mysql_secure_installation» после установки MySQL?
  • Как проверить какие задачи запущены?
  • Как вы делаете бекап MySQL?

[⬆] Вопросы о DevOps:

  • Как вы можете описать ваш workflow при создании скрипта?
  • Что такое GIT?
  • Что такое динамически/статически слинкованные файлы?
  • Что делает «./configure && make && make install»?
  • Для чего используется puppet/chef/ansible?
  • Для чего используется Nagios/Zenoss/NewRelic?
  • Для чего используется Jenkins/TeamCity/GoCI?
  • В чем разница между контейнеризацией и виртуализацией?
  • Как создать нового postgres пользователя?
  • Что такое виртуальный IP адрес? Что такое кластер?
  • Как вывести все строки печатных символов, присутствующих в файле?
  • Как найти зависимости для библиотеки?
  • Что такое Automake и Autoconf?
  • ./configure вывела ошибку, что libfoobar не найдена в система, как вы будете исправлять это? Что может быть не так?
  • Какие преимущества/недостатки у скриптов против компилируемых программ?
  • Какая связь между непрерывной доставкой (continuous delivery) и DevOps?
  • Каковы важные аспекты системы непрерывной интеграции и развертывания?
  • Как бы вы включили совместное использование сетевых файлов в AWS, которые позволили бы экземплярам EC2 в нескольких зонах доступности обмениваться данными?

[⬆] Забавные вопросы::

  • Небрежный сисадмин запустил команду chmod 444 /bin/chmod — как ву будете исправлять проблему?
  • Я потерял пароль пользователя root. Что мне делать?
  • Я перезагрузил удаленный сервер, но спустя 10 минут все еще не могу зайти по SSH. Что может быть не так?
  • Если бы вы попали на пустынный остров с 5 утилитами коммандной строки, то какие утилиты это были бы?
  • Вы сталкиваетесь с случайным компьютером и, похоже, это консоль к мирозданию. Что первое вы наберете?
  • Расскажите о креативном использовании ssh в вашей практике?
  • Вы случайно удалили запущенный скрипт, как вы будете его восстанавливать?
  • Что случится 19 января 2038 года?
  • Как перезагрузить сервер когда команда reboot не доступна?

[⬆] Время демо:

  • Распакуйте test.tar.gz без использования man и google.
  • Удалите все «*.pyc» файлы рекурсивно из testdir.
  • Найдите все «my konfu is the best» во всех *.py файлах.
  • Замените все вхождения «my konfu is the best» на «I’m a linux jedi master» во всех *.txt файлах.
  • Проверьте доступность 443 порта на машине с IP X.X.X.X.
  • Получите страницу http://myinternal.webserver.local/test.html при помощи telnet.
  • Как отправить email без почтового клиента, только с помощью коммандной строки?
  • Напишите метод get_prim в python/perl/bash/pseudo.
  • Найдите все файлы, доступ к которым был осуществлен за последние 30 дней.
  • Объясните следующую команду (date ; ps -ef | awk '{print $1}' | sort | uniq | wc -l ) >> Activity.log
  • Напишите скрипт, показывающий разницу двух каталогов.
  • Из лог файла, содержащего <TIME> : [MESSAGE] : [ERROR_NO] - Human readable text выведите сумму/количество указанной ошибки, которая повторяется каждый час, или указанный час.

[⬆] Другие ссылки:

Некоторые вопросы ‘заимствованы’ из других замечательных ссылок, например:

  • https://github.com/darcyclarke/Front-end-Developer-Interview-Questions
  • https://github.com/kylejohnson/linux-sysadmin-interview-questions/blob/master/test.md
  • http://slideshare.net/kavyasri790693/linux-admin-interview-questions

Как мне узнать, какой процесс предотвращает размонтирование?

Когда я делаю

sudo umount /media/KINGSTON

я получил

umount: /media/KINGSTON: device is busy.

Я закрываю все окна и проверяю, чтобы все оболочки указывали на другие каталоги. Как я могу найти, какой процесс предотвращает размонтирование?

задан
6 November 2010 в 22:05

поделиться

4 ответа

откройте терминал:

fuser -c /media/KINGSTON

Он выдаст что-то вроде:

/media/KINGSTON/: 3106c 11086

Это даст вам pid процессов, использующих этот том. Дополнительный символ в конце pid даст дополнительную информацию. ( c in 3106c)

c — процесс использует файл в качестве текущей рабочей директории
.
m — файл отображен с помощью mmap
.
o — процесс использует его как открытый файл
.
r — файл является корневым каталогом процесса
.
t — процесс обращается к файлу как к текстовому файлу
.
y — этот файл является управляющим терминалом для процесса

Так что для размонтирования просто убейте эти пиды и повторите попытку размонтирования

sudo kill -9 3106 11086
sudo umount /media/KINGSTON

Примечание: Чтобы найти точное имя приложения этих пидов вы можете использовать эту команду

cat /proc/<pid>/cmdline

Например : cat /proc/11086/cmdline

это выведет что-то вроде ниже.

    evince^@/media/KINGSTON/Ubuntu-guide.pdf^@

Надеюсь, это поможет

ответ дан aneeshep
6 November 2010 в 22:05

поделиться

Тем временем команда фьюзера значительно улучшилась. Вы можете выполнить всю работу с помощью одной команды:

$ sudo fuser -ickv /"mountpoint"

Где:

  • параметр k убивает нарушающий процесс,
  • в то время как v показывает заранее процесс и его Пользователь
  • и i запрашивает подтверждение.

Если какой-то процесс сопротивляется, попробуйте снова с помощью fuser -ickv -9 (или, в более общем смысле, с помощью -SIGNAL ), который убивает самых упорных.
Но вы всегда найдете какой-нибудь «бессмертный» процесс …!

В этих случаях я недавно научился использовать

$ sudo umount --lazy --force <mountpoint>

как последний ресурс, который до сих пор работал у меня каждый раз.

ответ дан prometheos
6 November 2010 в 22:05

поделиться

Также это может помочь:

lsof | grep /media/KINGSTON

ответ дан muru
6 November 2010 в 22:05

поделиться

Наиболее полезным инструментом является lsof Install lsof. Он показывает, какие файлы используются какими процессами. Если /media/KINGSTON является точкой монтирования (имя устройства также будет работать), то следующая команда показывает все файлы, которые используются в этой точке монтирования:

lsof /media/KINGSTON

Если вы запустите эту команду как обычный пользователь, то она покажет только ваши собственные процессы¹. Запустите sudo lsof /media/KINGSTON, чтобы увидеть процессы всех пользователей.

Вывод из lsof выглядит следующим образом:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
zsh4    31421 gilles  cwd    DIR    8,1     4096 130498 /var/tmp
zsh4    31421 gilles  txt    REG    8,1   550804 821292 /bin/zsh4
zsh4    31421 gilles  mem    REG    8,1    55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4    31421 gilles   12r   REG    8,1   175224 822276 /usr/share/zsh/functions/Completion.zwc

В колонке COMMAND указано имя исполняемого файла программы, а в колонке PID — идентификатор процесса. В колонке NAME указано имя файла; вы можете увидеть (deleted), если файл был удален при открытии (когда файл удаляется, у него больше нет имени, но он все еще существует до тех пор, пока последний процесс, использующий его, не закроет файл). USER должен быть понятен сам. Остальные колонки здесь не имеют значения, за исключением, возможно, FD, который показывает, как файл используется процессом:

  • cwd: текущий рабочий каталог
  • txt: исполняемая программа²
  • mem: файл, отображенный на память (здесь думайте об этом как об открытом файле)
  • a число: реально открытый файл; последующая буква указывает на режим открытия, например, r для чтения и w для записи

Нет механического способа определить местонахождение окна, в котором открыт файл (на самом деле, это технически не имеет смысла: если процесс имеет несколько окон, то файл не особенно ассоциируется с тем или иным окном), и даже не существует простого способа определения окна процесса (и, конечно же, процесс не должен иметь окон). Но обычно достаточно имени команды и имени файла, чтобы найти нарушителя и закрыть файл должным образом.

Если вы не можете закрыть файл и просто хотите закончить все это, вы можете убить процесс с помощью kill 31421 (где 31421 — это идентификатор процесса) или kill -HUP 31421 («повесить трубку»). Если простое убийство не делает фокуса, убивайте с крайним предубеждением: kill -KILL 31421.

Есть GUI для lsof, glsof, но он еще не готов для прайм-тайма, и пока не упакован для Ubuntu.

¹ .
Lsof может перечислять некоторую информацию о процессах других пользователей, но он не определяет точку монтирования, поэтому не будет перечислять их, если вы укажете точку монтирования.

²
Исполняемый код часто называют текстом при обсуждении исполняемых форматов.

ответ дан Zanna
6 November 2010 в 22:05

поделиться

Другие вопросы по тегам:

Похожие вопросы:

Каждый процесс в операционной системе имеет свой уникальный идентификатор, по которому можно получить информацию об этом процессе, а также отправить ему управляющий сигнал или завершить.

В Linux такой идентификатор называется PID, и  узнать его можно несколькими способами. В этой статье мы рассмотрим, как узнать PID процесса в Linux, а также зачем это может вам понадобиться.

1. ps

Самый распространённый способ узнать PID Linux — использовать утилиту ps:

ps aux | grep имя_процесса

Кроме нужного нам процесса, утилита также выведет PID для grep, ведь процесс был запущен во время поиска. Чтобы его убрать, добавляем такой фильтр:

ps aux | grep имя_процесса | grep -v grep

Например, узнаём PID всех процессов, имя которых содержит слово «Apache»:

ps aux | grep apache | grep -v grep

2. pgrep

Если вам не нужно видеть подробную информацию о процессе, а достаточно только PID, то можно использовать утилиту pgrep:

pgrep apache

По умолчанию утилита ищет по командной строке запуска процесса, если нужно искать только по имени процесса, то надо указать опцию -f:

pgrep -f apache

3. pidof

Эта утилита ищет PID конкретного процесса по его имени. Никаких вхождений, имя процесса должно только совпадать с искомым:

pidof apache2

С помощью опции -s можно попросить утилиту выводить только один PID:

pidof -s apache2

4. pstree

Утилита pstree позволяет посмотреть список дочерних процессов для определённого процесса, также их pid-идентификаторы. Например, посмотрим дерево процессов Apache:

pstree -p | grep apache2

Как узнать PID скрипта

Когда вы запускаете скрипт в оболочке, например Bash запускается процесс известный как подоболочка и выполняет последовательно все команды скрипта. Чтобы узнать PID процесса подоболочки Bash, запущенной для скрипта, обратитесь к специальной переменной $$. Эта переменная доступна только для чтения, поэтому вы не сможете ее редактировать:

vi ~/check_pid.sh

#!/bin/bash
echo "PID этого скрипта: $$"

Каким процессом занят файл Linux

Выше мы рассмотрели, как получить PID процесса Linux по имени, а теперь давайте узнаем PID по файлу, который использует процесс. Например, мы хотим удалить какой-либо файл, а система нам сообщает, что он используется другим процессом.

С помощью утилиты lsof можно посмотреть, какие процессы используют директорию или файл в данный момент. Например, откроем аудио-файл в плеере totem, а затем посмотрим, какой процесс использует её файл:

lsof /home/sergiy/трек.mp3

В начале строки мы видим название программы, а дальше идёт её PID. Есть ещё одна утилита, которая позволяет выполнить подобную задачу — это fuser:

fuser /home/sergiy/трек.mp3

Здесь будет выведен только файл и PID процесса. После PID идёт одна буква, которая указывает, что делает этот процесс с файлом или папкой:

  • c — текущая директория;
  • r — корневая директория;
  • f — файл открыт для чтения или записи;
  • e — файл выполняется как программа;
  • m — файл подключен в качестве библиотеки.

Кто использовал файл в Linux

Узнать процесс, который сейчас занимает файл, достаточно просто. Но как узнать, какой процесс обращается к файлу не надолго, например, выполняет его как программу или читает оттуда данные? Эта задача уже труднее, но вполне решаема с помощью подсистемы ядра auditd. В CentOS набор программ для работы с этой подсистемой поставляется по умолчанию, в Ubuntu же его придётся установить командой:

sudo apt install auditd

Теперь создаём правило для мониторинга. Например, отследим, кто запускает утилиту who:

auditctl -w /usr/bin/who -p x -k who_exec

Здесь -w — адрес файла, который мы будем отслеживать, —p — действие, которое нужно отслеживать, —k — произвольное имя для правила. В качестве действия могут использоваться такие варианты:

  • x — выполнение;
  • w — запись;
  • r — чтение;
  • a — изменение атрибутов.

Теперь выполним один раз who и посмотрим, что происходит в логе с помощью команды ausearch:

sudo ausearch -i -k who_exec

Здесь в секции SYSCALL есть PID процесса, под которым была запущена программа, а также PPID — программа, которая запустила нашу who. Копируем этот PID и смотрим информацию о нём с помощью ps:

ps aux | grep 15595

Становиться понятно, что это bash.

Какой процесс использует порт в Linux

Иногда необходимо узнать PID Linux-программы, которая использует сетевой порт, например 80. Для этого можно использовать утилиту ss:

sudo ss -lptn 'sport = :80'

Мы видим, что это несколько процессов Apache. Использовав опцию dport, можно узнать, какой процесс отправляет данные на указанный порт:

sudo ss -lptn 'dport = :80'

Выводы

В этой статье мы рассмотрели, как узнать PID процесса в Linux по различным условиям: имени или файлу. Как видите, всё достаточно просто, и в считанные минуты можно можно понять, что происходит с вашей операционной системой, и какой процесс за это отвечает.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Как мне узнать, какой процесс предотвращает размонтирование?

Когда я делаю

sudo umount /media/KINGSTON

я получил

umount: /media/KINGSTON: device is busy.

Я закрываю все окна и проверяю, чтобы все оболочки указывали на другие каталоги. Как я могу найти, какой процесс предотвращает размонтирование?

задан
6 November 2010 в 22:05

поделиться

4 ответа

откройте терминал:

fuser -c /media/KINGSTON

Он выдаст что-то вроде:

/media/KINGSTON/: 3106c 11086

Это даст вам pid процессов, использующих этот том. Дополнительный символ в конце pid даст дополнительную информацию. ( c in 3106c)

c — процесс использует файл в качестве текущей рабочей директории
.
m — файл отображен с помощью mmap
.
o — процесс использует его как открытый файл
.
r — файл является корневым каталогом процесса
.
t — процесс обращается к файлу как к текстовому файлу
.
y — этот файл является управляющим терминалом для процесса

Так что для размонтирования просто убейте эти пиды и повторите попытку размонтирования

sudo kill -9 3106 11086
sudo umount /media/KINGSTON

Примечание: Чтобы найти точное имя приложения этих пидов вы можете использовать эту команду

cat /proc/<pid>/cmdline

Например : cat /proc/11086/cmdline

это выведет что-то вроде ниже.

    evince^@/media/KINGSTON/Ubuntu-guide.pdf^@

Надеюсь, это поможет

ответ дан aneeshep
6 November 2010 в 22:05

поделиться

Тем временем команда фьюзера значительно улучшилась. Вы можете выполнить всю работу с помощью одной команды:

$ sudo fuser -ickv /"mountpoint"

Где:

  • параметр k убивает нарушающий процесс,
  • в то время как v показывает заранее процесс и его Пользователь
  • и i запрашивает подтверждение.

Если какой-то процесс сопротивляется, попробуйте снова с помощью fuser -ickv -9 (или, в более общем смысле, с помощью -SIGNAL ), который убивает самых упорных.
Но вы всегда найдете какой-нибудь «бессмертный» процесс …!

В этих случаях я недавно научился использовать

$ sudo umount --lazy --force <mountpoint>

как последний ресурс, который до сих пор работал у меня каждый раз.

ответ дан prometheos
6 November 2010 в 22:05

поделиться

Также это может помочь:

lsof | grep /media/KINGSTON

ответ дан muru
6 November 2010 в 22:05

поделиться

Наиболее полезным инструментом является lsof Install lsof. Он показывает, какие файлы используются какими процессами. Если /media/KINGSTON является точкой монтирования (имя устройства также будет работать), то следующая команда показывает все файлы, которые используются в этой точке монтирования:

lsof /media/KINGSTON

Если вы запустите эту команду как обычный пользователь, то она покажет только ваши собственные процессы¹. Запустите sudo lsof /media/KINGSTON, чтобы увидеть процессы всех пользователей.

Вывод из lsof выглядит следующим образом:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
zsh4    31421 gilles  cwd    DIR    8,1     4096 130498 /var/tmp
zsh4    31421 gilles  txt    REG    8,1   550804 821292 /bin/zsh4
zsh4    31421 gilles  mem    REG    8,1    55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4    31421 gilles   12r   REG    8,1   175224 822276 /usr/share/zsh/functions/Completion.zwc

В колонке COMMAND указано имя исполняемого файла программы, а в колонке PID — идентификатор процесса. В колонке NAME указано имя файла; вы можете увидеть (deleted), если файл был удален при открытии (когда файл удаляется, у него больше нет имени, но он все еще существует до тех пор, пока последний процесс, использующий его, не закроет файл). USER должен быть понятен сам. Остальные колонки здесь не имеют значения, за исключением, возможно, FD, который показывает, как файл используется процессом:

  • cwd: текущий рабочий каталог
  • txt: исполняемая программа²
  • mem: файл, отображенный на память (здесь думайте об этом как об открытом файле)
  • a число: реально открытый файл; последующая буква указывает на режим открытия, например, r для чтения и w для записи

Нет механического способа определить местонахождение окна, в котором открыт файл (на самом деле, это технически не имеет смысла: если процесс имеет несколько окон, то файл не особенно ассоциируется с тем или иным окном), и даже не существует простого способа определения окна процесса (и, конечно же, процесс не должен иметь окон). Но обычно достаточно имени команды и имени файла, чтобы найти нарушителя и закрыть файл должным образом.

Если вы не можете закрыть файл и просто хотите закончить все это, вы можете убить процесс с помощью kill 31421 (где 31421 — это идентификатор процесса) или kill -HUP 31421 («повесить трубку»). Если простое убийство не делает фокуса, убивайте с крайним предубеждением: kill -KILL 31421.

Есть GUI для lsof, glsof, но он еще не готов для прайм-тайма, и пока не упакован для Ubuntu.

¹ .
Lsof может перечислять некоторую информацию о процессах других пользователей, но он не определяет точку монтирования, поэтому не будет перечислять их, если вы укажете точку монтирования.

²
Исполняемый код часто называют текстом при обсуждении исполняемых форматов.

ответ дан Zanna
6 November 2010 в 22:05

поделиться

Другие вопросы по тегам:

Похожие вопросы:

«В Linux мы используем команду umount для размонтирования устройства или раздела в соответствии с его путем. Однако в некоторых сценариях вы можете столкнуться с ошибкой «цель занята» при попытке размонтировать устройство.

В этом руководстве мы попытаемся разобраться в причине этой ошибки, почему она возникает и как ее устранить».

Причина ошибки «Цель занята»

Как только вы смонтируете устройство в своей системе, любой процесс с достаточными правами доступа сможет получить доступ к его файловой системе. Когда возникает ошибка «цель занята», это означает, что активный процесс в настоящее время обращается к файлу или каталогу на устройстве.

Поэтому, чтобы предотвратить потерю данных, ядро ​​Linux не позволит вам размонтировать устройство при доступе к нему.

Но бывают случаи, когда вам нужно удалить устройство. Давайте обсудим различные методы, которые вы можете использовать для этого.

Исправление 1: завершить запущенный процесс

Мы установили, что основной причиной этой ошибки является активный процесс, который обращается к файлу на устройстве.

Поэтому, чтобы устранить эту ошибку, мы можем завершить процесс, и устройство будет свободно монтироваться.

К счастью, в Linux есть команда, которая позволяет отображать все открытые файлы и процессы, которые обращаются к этому файлу.

Вы можете узнать больше о команде lsof здесь:

https://linuxhint.com/check-open-files-in-linux/

Мы можем использовать команду lsof, за которой следует путь к диску. Например, если мы получаем ошибку в устройстве /dev/sda1, мы можем просмотреть открытые файлы и связанные с ними процессы с помощью команды:

$ судо lsof /dev/sda1

Команда должна вернуть процессам, обращающимся к файлам, их идентификаторы.

Затем мы можем взять PID и использовать их для уничтожения процесса.

$ судо убить -9 [PID]

После завершения процесса вы можете размонтировать устройство.

Имейте в виду, что к файлу может обращаться несколько процессов. Следовательно, убедитесь, что вы прекратили их все.

Исправление 2: принудительное размонтирование

Другим решением для отключения занятого устройства является его принудительное выполнение. Это может быть полезно, если ошибка вызвана недоступным ресурсом, например сетевым ресурсом.

Имейте в виду, что принудительное отключение устройства может привести к потере данных.

Для этого используйте параметр -f как:

$ umount -f /путь/к/устройству

Исправление 3: ленивое размонтирование

Третья и более безопасная альтернатива принудительному размонтированию — отложенное размонтирование. Ленивое размонтирование позволяет системе отсоединять указанную точку монтирования в иерархическом порядке. Он работает, удаляя любые ссылки на файловую систему, как только она не занята.

И как только ни один процесс не обращается к fs, система успешно выполняет команду размонтирования и удаляет устройство.

Это безопасный вариант, поскольку вы не закрываете принудительно запущенные процессы. Вместо этого вы позволяете системе отслеживать завершение операций, а затем размонтировать устройство.

Чтобы использовать ленивое размонтирование, используйте флаг -l в команде umount:

$ размонтировать -l /путь/к/устройству

Вывод

Это все для этого. В этом руководстве мы рассмотрели причину ошибки «цель занята» при размонтировании устройств в системе Linux. Мы также предоставили три решения для правильного размонтирования устройства.

Как всегда, спасибо за чтение!!

Вопросы для интервью системного администратора Linux/DevOps

Коллекция вопросов для собеседования linux сисадмина/devops. Не стесняйтесь добавлять свои через pull request’ы, issues или сообщением по электронной почте.

Содержание

  1. Участники
  2. Общие вопросы
  3. Простые вопросы о Linux
  4. Вопросы среднего уровня о Linux
  5. Сложные вопросы о Linux
  6. Вопросы экспертного уровня о Linux
  7. Вопросы по сетям
  8. Вопросы о MySQL
  9. Вопросы о DevOps практиках
  10. Забавные вопросы
  11. Время демо
  12. Другие ссылки

[⬆] Участники:

  • moregeek
  • typhonius
  • schumar
  • negesti
  • peter
  • andreashappe
  • quatrix
  • biyanisuraj
  • pedroguima
  • Ben
  • bharatnc

[⬆] Общие вопросы:

  • Что вы узнали за вчера/эту неделю?
  • Расскажите о предпочитаемом окружении разработчика/администратора. (OS, редактор, браузеры, инструменты и т.п.)
  • Расскажите о последнем проекте на Linux, который вы закончили.
  • Расскажите о самой большой неудаче, которую вы допустили [какой-то период времени] и как вы изменились на сегодняшний день. Что вы вынесли из этого опыта?
  • Почему мы должны выбрать вас?
  • Какую роль играет DNS в сети?
  • Что такое HTTP?
  • Что такое HTTP прокси и как он работает?
  • Опишите кратко как работает HTTPS?
  • Что такое SMTP? Расскажите кратко сценарий доставки сообщения через SMTP.
  • Что такое RAID? Что такое RAID0, RAID1, RAID5, RAID10?
  • Что такое резервная копия 0-го уровня? Что такое инкрементальная резервная копия?
  • Опишите иерархию файловой системы в Linux.

[⬆] Простые вопросы о Linux:

  • Какое имя и UID администратора?
  • Как посмотреть все файлы в каталоге, включая скрытые?
  • Какая команда в Unix/Linux удаляет каталог со всем его содержимым?
  • Какая команда в Unix/Linux показывает свободную/используемую память? Существует ли свободная память в Linux?
  • Как найти строку «my konfu is the best» в файлах каталога рекурсивно?
  • Как подключиться к удаленному серверу или что такое SSH?
  • Как получить все переменные окружения и как их можно использовать?
  • Я получил «command not found» при запуске ifconfig -a. Что может быть не так?
  • Что произойдет, если я нажму TAB-TAB?
  • Какая команда показывает доступное свободное пространство на диске в Unix/Linux?
  • Какие команды вы знаете, которые могут быть использованы для проверки DNS записей?
  • Какая команда Unix/Linux используется для изменения владельца файла, прав доступа к файлу?
  • Что делает команда chmod +x FILENAME?
  • Что означают права 0750 для файла?
  • Что означают права 0750 для каталога?
  • Как добавить пользователя без прав входа в систему?
  • Как добавить/убрать пользователя в/из группы?
  • Что такое bash алиас?
  • Как устеновить email для пользователя root?
  • Что делает Ctrl+c?
  • Что содержится в файле /etc/services?
  • Как перенаправить STDOUT и STDERR в bash?
  • Какая разница между UNIX и Linux?
  • В чем разница между Telnet и SSH?
  • Объясните три усредненных значения load average и что они означают? Какой командой можно посмотреть load average?
  • Можете назвать букву в нижнем регистре, которая не является валидной опцией для GNU ls?
  • Что такое модуль ядра Linux?
  • Расскажите по шагам как загрузить систему в однопользовательском режиме для решения проблем.
  • Расскажите по шагам как вы будете решать проблему с ошибкой 404 в веб-приложении, которое вы обслуживаете.

[⬆] Вопросы среднего уровня о Linux:

  • Что делают следующие команды и как вы из будете использовать?
  • tee
  • awk
  • tr
  • cut
  • tac
  • curl
  • wget
  • watch
  • head
  • tail
  • Что делает & в конце команды?
  • Что делает & disown в конце команды?
  • Что такое пакетный фильтр и как он работает?
  • Что такое виртуальная память?
  • Что такое swap и для чего он используется?
  • Что такое A-запись, NS-запись, PTR-запись, CNAME-запись, MX-запись?
  • Знаете ли вы еще какие-либо RR-записи и для чего они используются?
  • Что такое Split-Horizon DNS?
  • Что такое sticky bit?
  • Что делает установленный на файл immutable bit?
  • Какая разница между символическими и жесткими ссылками? Что произойдет если удалить символическую/жесткую ссылку?
  • Что такое inode и какая информация хранится в inode?
  • Как принудительно запустить проверку файловой системы при следующей перезагрузке?
  • Что такое SNMP и для чего он используется?
  • Что такое уровень запуска и как узнать текущий?
  • Что такое SSH port forwarding?
  • Какая разница между локальным и удаленным пробросом портов SSH?
  • Какие шаги надо предпринять, чтоб добавить пользователя в систему не используя утилиты useradd/adduser?
  • Что такое MAJOR и MINOR нумерация спец. файлов?
  • Опишите команду mknod и когда она используется?
  • Опишите сценарий, когда вы можете получить ошибку «filesystem is full», но ‘df’ показывает наличие свободного места.
  • Опишите сценарий, когда вы удаляете файл,но ‘df’ не показывает, что место освободилось.
  • Опишите как работает ‘ps’.
  • Что случиться, если процесс-потомок умрет и не будет процесса-родителя, ожидающего его и что в этом плохого?
  • Объясните кратко каждое из состояний процесса.
  • Как узнать какой процесс слушает указанный порт?
  • Что такое зомби-процесс и какова его причина возникновения?
  • Вы запускаете bash скрипт и хотите видеть его вывод на экране и одновременно сохранить этот вывод в файл. Как это сделать?
  • Объясните, что делает echo «1» > /proc/sys/net/ipv4/ip_forward.
  • Кратко объясните, какие шаги надо предпринять, чтоб создать и установить сертификат для сайта https://foo.example.com.
  • Можно ли создать несколько HTTPS виртуальных хостов, используя один IP?
  • Что такое wildcard сертификат?
  • Какие типы файловых систем в Linux вам известны?
  • В чем разница между процессом и потоком? И родительским и потомком процессами после системного вызова fork?
  • В чем разница между exec и fork?
  • Для чего используется nohup?
  • В чем разница между этими двумя командами?
  • myvar=hello
  • export myvar=hello
  • Как много NTP севреров настроено в вашем локальном ntp.conf?
  • Что означает колонка ‘reach’ в выводе ntpq-p?
  • Вам необходимо обновить ядро на 100-1000 серверах, как вы будете это делать?
  • Как можно получить Host, Channel, IS, LUN для SCSI диска?
  • Как можно ограничить использование памяти для процесса?
  • What is bash quick substitution/caret replace(^x^y)?
  • Какие вы знаете альтернативные оболочки? Какую вы используете?
  • Что такое tarpipe (или, как вы будете копировать все, включая жесткие ссылки и специальные файлы, с одного сервера на другой)?
  • Как можно проверить, что пакет httpd уже был установлен?
  • Как посмотреть содержимое установочного пакета?
  • Как вы определите какой пакет лучше: openssh-server-5.3p1-118.1.el6_8.x86_64 or openssh-server-6.6p1-1.el6.x86_64?
  • Как вы можете объяснить мне разницу между хранилищем, основанным на блоках и объектах?

[⬆] Сложные вопросы о Linux:

  • Что такое туннель и как вы можете обойти http прокси?
  • В чем разница между IDS и IPS?
  • Какие горячие клавиши вы используете регулярно?
  • Что такое Linux Standard Base?
  • Что такое атомарная операция?
  • Вы только что настроили http сервер, который не запустился после рестарта. Что вы будете делать?
  • Какие ключи содержаться в ~/.ssh/authorized_keys и для чего нужен этот файл?
  • Я добавил свой публичный ключ в authorized_keys, но до сих пор получаю запрос пароля. Что может быть не так?
  • Вы когда-нибудь собирали RPM, DEB или solaris пакеты?
  • Что сделает :(){ :|:& };: с вашей системой?
  • Как можно перехватить Linux сигнал из скрипта?
  • Можно ли перехватить SIGKILL?
  • Что происходит, когда ядро Linux запускает OOM killer и как он выбирает какой процесс необходимо убить в первую очередь?
  • Опишите процесс загрузки Linux с максимально возможным количеством деталей, начиная с момента включения компьютера и заканчивая получением приглашения командной строки.
  • Что такое закрытие в chroot?
  • При попытке отмонтировать каталог получаем ошибку занятости, как найти какой PID держит каталог?
  • Что такое LD_PRELOAD и когда он используется?
  • Вы запустили бинарник и ничего не произошло. Как вы будете искать проблему?
  • Что такое cgroups? Можете ли вы указать сценарий, когда это может быть использовано?
  • Как можно удалить файл, имя которого содержит непечатные символы?
  • Как можно увеличить/уменьшить приоритет процесса в Linux?
  • Что такое run-levels в Linux?

[⬆] Вопросы экспертного уровня о Linux:

  • Запущенный процесс получает EAGAIN: Resource temporarily unavailable при чтении соккета. Как можно закрыть этот плохой соккет/файловый дескриптор без убивания процесса?

[⬆] Вопросы по сетям:

  • Что такое localhost и почему ping localhost может не работать?
  • В чем сходство между «ping» и «traceroute»? Как traceroute находит промежуточные хосты?
  • Какая команда можно использовать для поиска всех открытых портов и/или соединений с соккетами на машине?
  • Валидный ли IP адрес 300.168.0.123?
  • Какие IP диапазоны/подсети являются частными или не маршрутизируемыми (RFC 1918)?
  • Что такое VLAN?
  • Что такое ARP и для чего используется?
  • В чем разница между TCP и UDP?
  • Какова цель шлюза по умолчанию?
  • Какая команда используется для просмотра таблицы маршрутизации в Linux?
  • TCP-соединение в сети может быть однозначно определено четырьмя вещами. Что это за вещи?
  • Когда клиент использует бразер для подключения к веб-серверу, какие порты источника и назначения будут у этого соединения?
  • Как можно добавить IPv6 адрес для конкретного интерфейса?
  • Вы добавили IPv4 и IPv6 адреса на eth0 интерфейс. Ping на v4 адрес работает, но ping на v6 адрес дает ответ sendmsg: operation not permitted. Что может быть не так?
  • Что такое SNAT и когда он должен быть использован?
  • Объясните, как можно войти по ssh на Linux сервер, который сбрасывает (DROP) все новые входящие пакеты, используя SSH туннель.
  • Как вы будете противодействовать DDoS атаке?
  • Как можно посмотреть содержимое ip пакета?
  • Что такое IPoAC (RFC 1149)?

[⬆] Вопрос о MySQL:

  • Как создать пользователя?
  • Как предоставить права пользователю?
  • В чем разница между ‘left’ и ‘right’ join?
  • Объясните кратко разницу между InnoDB и MyISAM.
  • Зачем надо запускать «mysql_secure_installation» после установки MySQL?
  • Как проверить какие задачи запущены?
  • Как вы делаете бекап MySQL?

[⬆] Вопросы о DevOps:

  • Как вы можете описать ваш workflow при создании скрипта?
  • Что такое GIT?
  • Что такое динамически/статически слинкованные файлы?
  • Что делает «./configure && make && make install»?
  • Для чего используется puppet/chef/ansible?
  • Для чего используется Nagios/Zenoss/NewRelic?
  • Для чего используется Jenkins/TeamCity/GoCI?
  • В чем разница между контейнеризацией и виртуализацией?
  • Как создать нового postgres пользователя?
  • Что такое виртуальный IP адрес? Что такое кластер?
  • Как вывести все строки печатных символов, присутствующих в файле?
  • Как найти зависимости для библиотеки?
  • Что такое Automake и Autoconf?
  • ./configure вывела ошибку, что libfoobar не найдена в система, как вы будете исправлять это? Что может быть не так?
  • Какие преимущества/недостатки у скриптов против компилируемых программ?
  • Какая связь между непрерывной доставкой (continuous delivery) и DevOps?
  • Каковы важные аспекты системы непрерывной интеграции и развертывания?
  • Как бы вы включили совместное использование сетевых файлов в AWS, которые позволили бы экземплярам EC2 в нескольких зонах доступности обмениваться данными?

[⬆] Забавные вопросы::

  • Небрежный сисадмин запустил команду chmod 444 /bin/chmod — как ву будете исправлять проблему?
  • Я потерял пароль пользователя root. Что мне делать?
  • Я перезагрузил удаленный сервер, но спустя 10 минут все еще не могу зайти по SSH. Что может быть не так?
  • Если бы вы попали на пустынный остров с 5 утилитами коммандной строки, то какие утилиты это были бы?
  • Вы сталкиваетесь с случайным компьютером и, похоже, это консоль к мирозданию. Что первое вы наберете?
  • Расскажите о креативном использовании ssh в вашей практике?
  • Вы случайно удалили запущенный скрипт, как вы будете его восстанавливать?
  • Что случится 19 января 2038 года?
  • Как перезагрузить сервер когда команда reboot не доступна?

[⬆] Время демо:

  • Распакуйте test.tar.gz без использования man и google.
  • Удалите все «*.pyc» файлы рекурсивно из testdir.
  • Найдите все «my konfu is the best» во всех *.py файлах.
  • Замените все вхождения «my konfu is the best» на «I’m a linux jedi master» во всех *.txt файлах.
  • Проверьте доступность 443 порта на машине с IP X.X.X.X.
  • Получите страницу http://myinternal.webserver.local/test.html при помощи telnet.
  • Как отправить email без почтового клиента, только с помощью коммандной строки?
  • Напишите метод get_prim в python/perl/bash/pseudo.
  • Найдите все файлы, доступ к которым был осуществлен за последние 30 дней.
  • Объясните следующую команду (date ; ps -ef | awk '{print $1}' | sort | uniq | wc -l ) >> Activity.log
  • Напишите скрипт, показывающий разницу двух каталогов.
  • Из лог файла, содержащего <TIME> : [MESSAGE] : [ERROR_NO] - Human readable text выведите сумму/количество указанной ошибки, которая повторяется каждый час, или указанный час.

[⬆] Другие ссылки:

Некоторые вопросы ‘заимствованы’ из других замечательных ссылок, например:

  • https://github.com/darcyclarke/Front-end-Developer-Interview-Questions
  • https://github.com/kylejohnson/linux-sysadmin-interview-questions/blob/master/test.md
  • http://slideshare.net/kavyasri790693/linux-admin-interview-questions

Как узнать, какие процессы препятствуют размонтированию устройства?


Иногда я хотел бы размонтировать USB устройство с umount /run/media/theDrive, но я получаю сообщение об drive is busyошибке.

Как узнать, какие процессы или программы обращаются к устройству?


Ответы:


Используйте, lsof | grep /media/whateverчтобы узнать, что использует крепление.

Кроме того, рассмотрите возможность umount -l(lazy umount), чтобы новые процессы не могли использовать диск во время очистки.





Большая часть времени, лучшая командой использования является Lsof ( « л я с т о авторучке й Ильза»).

lsof +f -- /media/usb0

где /media/usb0точка монтирования USB-накопителя или другой файловой системы для размонтирования. +f --говорит lsof обрабатывать последующий аргумент как точку монтирования; это обычно, но не всегда, управляет само по себе, так что это lsof /media/usb0тоже работает. Он находит открытые файлы (даже несвязанные), отображенные в память файлы, текущие каталоги и некоторые другие неясные варианты использования. Вам нужно будет выполнить команду от имени пользователя root, чтобы получить информацию о процессах других пользователей (и я думаю, что есть устройства, где lsofнужно запускать от имени пользователя root).

Есть способы, которые lsof не найдет; это необычно на съемных носителях. Они включают:

  • точки монтирования: вы не можете размонтировать, /fooесли /foo/barэто точка монтирования.
  • монтировать устройства: вы не можете размонтировать, /fooесли /foo/barэто смонтированное блочное устройство или обычный файл, смонтированный в цикле, или если это источник монтируемого подключения Linux.
  • Экспорт NFS: lsof не обнаружит, что дерево экспортируется сервером NFS ядра.

Еще одна команда, которая может использоваться в крайнем случае, — это fuser, который перечисляет только PID процессов с открытыми файлами на устройстве:

fuser -m /media/usb0


Вы можете использовать, lsofкак сказал Питер, или если вы уверены, что просто хотите убить все эти вещи и размонтировать его, вы, вероятно, можете сделать что-то вроде:

fuser -Mk /mnt/path
umount /mnt/path





Открытые файлы

Процессы с открытыми файлами являются обычными виновниками. Показать их:

lsof +f -- <mountpoint or device>

Преимущество использования /dev/<device>вместо /mountpoint: точка монтирования исчезнет после umount -lили может быть скрыта наложенным монтированием.

fuserТакже можно использовать, но на мой взгляд, lsofесть более полезный вывод. Однако fuserэто полезно, когда дело доходит до уничтожения процессов, вызывающих ваши драмы, чтобы вы могли продолжить свою жизнь.

Список файлов <mountpoint>(см. Предостережение выше):

fuser -vmM <mountpoint>

Интерактивно уничтожать только процессы с открытыми для записи файлами:

fuser -vmMkiw <mountpoint>

После перемонтирования только для чтения ( mount -o remount,ro <mountpoint>) можно (r) убить все оставшиеся процессы:

fuser -vmMk <mountpoint>

точки монтирования

Виновником может быть само ядро. Другая файловая система, смонтированная в той файловой системе, к которой вы пытаетесь umount, вызовет горе. Проверить с:

mount | grep <mountpoint>/

Для петлевых креплений ( спасибо Стивену Китту ) также проверьте вывод:

losetup -la

Анонимные иноды (Linux)

Анонимные иноды могут быть созданы:

  • Временные файлы ( openс O_TMPFILE)
  • Inotify часы
  • [Eventfd]
  • [Eventpoll]
  • [Timerfd]

Это самый неуловимый тип покемона, и появляются в lsof«s TYPEстолбец как a_inode(который без документов на lsofстранице человека ).

Они не появятся lsof +f -- /dev/<device>, поэтому вам нужно:

lsof | grep a_inode

Для процессов уничтожения, содержащих анонимные inode, смотрите: Список текущих наблюдений inotify (pathname, PID) .

inotify часы (Linux)

Этот комментарий объясняет, почему inotify не следует предотвращать размонтирование, но в этом примечании описываются ситуации, в которых он будет :

в vx_softcnt_flush()вызове может зависнуть размонтированный Зависание происходит из-за того, что часы inotify увеличивают i_countпеременную и заставляют v_os_hold valueзначение оставаться повышенным, пока наблюдатель inotify не освободит удержание.




Если вы используете GNOME, отключение через Nautilus отобразит сообщение о том, какой процесс все еще использует диск, и файл, который он использует.

альтернативный текст


Для (как минимум) OpenBSD:

$ fstat /mnt/mountpoint

Например (использование doasдля выполнения fstatот имени пользователя root, поскольку в противном случае мы видели бы только наши собственные процессы):

$ doas fstat /usr/ports
USER     CMD          PID   FD MOUNT        INUM MODE         R/W    SZ|DV NAME
_pbuild  make       15172   wd /usr/ports  3923598  drwxrwxr-x     r     1536 /usr/ports/
_pbuild  make       40034   wd /usr/ports  3923598  drwxrwxr-x     r     1536 /usr/ports/

В этом случае я не смогу размонтировать, /usr/portsпока пользователь _pbuildне закончит эти два makeпроцесса.


Это распространенная ошибка: вы можете использовать другого пользователя (либо root, либо любого другого пользователя), перейти в каталог подключенного устройства и выйти из системы под этим пользователем. Когда вы забудете, что оставили в этом каталоге, вы можете попытаться найти его, пока не ослепнете. lsofдействительно показывает оболочку, какой текущий каталог использует это устройство. Возможно, вы захотите снова ввести в качестве этого пользователя su, чтобы сменить каталог.


  • При попытке открыть общий доступ к принтеру ошибка 0 00000057
  • При попытке обращения к службе брандмауэра защитника windows произошла ошибка
  • При попытке обработать ваш запрос произошла ошибка 17
  • При попытке обновления сигнатур программа microsoft antimalware обнаружила ошибку 2001
  • При попытке обновления настроек безопасного поиска произошла ошибка твиттер