Поиск по сайту:

4 полезных совета по командам mkdir, tar и kill в Linux


Мы продолжаем выполнять задачу традиционными способами до тех пор, пока не поймем, что ее можно решить гораздо лучше другим способом. В продолжение нашей серии советов и хитростей по Linux я предлагаю вам четыре совета, которые помогут вам во многих отношениях. Вот так!

1. Вам необходимо создать длинное/сложное дерево каталогов, подобное приведенному ниже. Каков наиболее эффективный способ добиться этого?

Древовидная структура каталогов должна быть достигнута, как предложено ниже.

cd /home/$USER/Desktop
mkdir tecmint
mkdir tecmint/etc
mkdir tecmint/lib
mkdir tecmint/usr
mkdir tecmint/bin
mkdir tecmint/tmp
mkdir tecmint/opt
mkdir tecmint/var
mkdir tecmint/etc/x1
mkdir tecmint/usr/x2
mkdir tecmint/usr/x3
mkdir tecmint/tmp/Y1
mkdir tecmint/tmp/Y2
mkdir tecmint/tmp/Y3
mkdir tecmint/tmp/Y3/z

Описанный выше сценарий можно просто реализовать, выполнив приведенную ниже однострочную команду.

mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}

Для проверки вы можете использовать команду tree. Если он не установлен, вы можете применить или yum пакет «tree».

tree tecmint

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

2. Создайте файл (скажем, тестовый) на рабочем столе (/home/$USER/Desktop) и заполните его указанным ниже содержимым.
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z

Что сделал бы в этом случае обычный пользователь?

a. Сначала он создаст файл, желательно с помощью сенсорной команды, например:

touch /home/$USER/Desktop/test

b. Он будет использовать текстовый редактор, чтобы открыть файл, которым может быть nano, vim или любой другой редактор.

nano /home/$USER/Desktop/test

c. Затем он поместит приведенный выше текст в этот файл, сохранит и выйдет.

Таким образом, независимо от времени, затраченного им/ей, ему потребуется как минимум 3 шага для выполнения описанного выше сценария.

Что сделает умный и опытный пользователь Linux? Он просто наберет приведенный ниже текст за один раз на терминале, и все готово. Ему не нужно выполнять каждое действие отдельно.

cat << EOF > /home/$USER/Desktop/test
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
EOF

Вы можете использовать команду «cat», чтобы проверить, были ли файл и его содержимое созданы успешно или нет.

cat /home/avi/Desktop/test

3. С архивами (в частности, TAR-шарами) мы очень часто имеем дело в Linux. Во многих случаях нам приходится использовать этот шарик TAR в другом месте, кроме папки «Загрузки». Что нам делать в этом сценарии?

Обычно в этом сценарии мы делаем две вещи.

a. Скопируйте/переместите tar-шар и извлеките его в место назначения, как:

cp firefox-37.0.2.tar.bz2 /opt/
or
mv firefox-37.0.2.tar.bz2 /opt/

b. перейдите в каталог /opt/.

cd /opt/

c. Извлеките архив.

tar -jxvf firefox-37.0.2.tar.bz2 

Мы можем сделать это наоборот.

Мы извлечем архив Tarball туда, где он находится, и скопируем/переместим извлеченный архив в нужное место следующим образом:

tar -jxvf firefox-37.0.2.tar.bz2 
cp -R firefox/  /opt/
or
mv firefox/ /opt/

В любом случае для завершения работы требуется два или более шагов. Профессионал может выполнить эту задачу за один шаг следующим образом:

tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/

Опция -C заставляет tar извлечь архив в указанную папку (здесь /opt/).

Нет, речь идет не о опции (-C), а о привычках. Возьмите за привычку использовать опцию -C с tar. Это облегчит вашу жизнь. С этого момента не перемещайте архив и не копируйте/перемещайте извлеченный файл, просто оставьте TAR-шар в папке Загрузки и распакуйте его куда угодно.

4. Как мы убиваем процесс традиционным способом?

В самом общем виде мы сначала перечисляем все процессы с помощью команды ps -A и конвейерируем его с помощью grep, чтобы найти процесс/сервис (скажем, apache2). >), просто так:

ps -A | grep -i apache2
Пример вывода
1006 ?        00:00:00 apache2
 2702 ?        00:00:00 apache2
 2703 ?        00:00:00 apache2
 2704 ?        00:00:00 apache2
 2705 ?        00:00:00 apache2
 2706 ?        00:00:00 apache2
 2707 ?        00:00:00 apache2

В приведенном выше выводе показаны все запущенные в данный момент процессы apache2 с их PID. Затем вы можете использовать эти PID для уничтожения apache2 с помощью следующей команды.

kill 1006 2702 2703 2704 2705 2706 2707

а затем перекрестно проверьте, запущен ли какой-либо процесс/служба с именем «apache2», как:

ps -A | grep -i apache2

Однако мы можем сделать это в более понятном формате, используя такие утилиты, как pgrep и pkill. Вы можете найти соответствующую информацию о процессе, просто используя pgrep. Допустим, вам нужно найти информацию о процессе для apache2, вы можете просто сделать:

pgrep apache2
Пример вывода
15396
15400
15401
15402
15403
15404
15405

Вы также можете указать имя процесса в поле pid, запустив.

pgrep -l apache2
Пример вывода
15396 apache2
15400 apache2
15401 apache2
15402 apache2
15403 apache2
15404 apache2
15405 apache2

Убить процесс с помощью pkill очень просто. Вы просто вводите имя ресурса, который нужно убить, и все готово. Я написал сообщение о pkill, на которое вы можете сослаться здесь: https://linux-console.net/how-to-kill-a-process-in-linux/.

Чтобы завершить процесс (скажем, apache2) с помощью pkill, все, что вам нужно сделать, это:

pkill apache2

Вы можете проверить, уничтожен ли apache2, выполнив приведенную ниже команду.

pgrep -l apache2

Он возвращает приглашение и ничего не печатает, что означает, что нет запущенного процесса с именем apache2.

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