---
title: "Полезная информация по разным командам Linux"
date: 2022-10-01
tags: [linux, shell]
---

{{< toc >}}

## Просмотр журнала

```bash
journalctl -b -xe -u NetworkManager
```

где:

* **b** - просмотр последней загрузки. Если указать индекс, начиная с нуля, то можно будет смотреть журнал предыдущих загрузок (0 - текущая, 1 - предыдущая и т.д.);
* **x** - вывод расширенной информации (по возможности);
* **e** - показ последних записей (перемотка в конец журнала);
* **u** - вывод информации от указанного модуля (в данном примере NetworkManager).

---

## [Описание NetworkManager](https://help.ubuntu.com/community/NetworkManager)

У него есть, также, интерфейс командной строки `nmcli`.

---

## Необновляемые пакеты

Если в результате выполнения команды `sudo apt-get update` в консоли появляется следующее сообщение:

```bash
Пакеты, которые будут оставлены в неизменном виде:
<перечисление_пакетов>
```

То необходимо выполнить следующую команду:

```bash
sudo apt-get dist-upgrade
```

---

## Просмотр версии дистрибутива (только для LSB дистрибутивов)

```bash
lsb_release -a
```

---

## Команда удаления всех старых версий ядра

Взято [отсюда](http://http://vasilisc.com/upgrade-ubuntu-15-04)

```bash
sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) --assume-yes
```

---

## Автоматическое подтверждение перезаписи файлов при копировании

```bash
yes | cp -rf xxx yyy
```

## Снятие сетевого дампа

```bash
tcpdump -i eth0 -w dump host "hostname.ru"
```

где:

* **-i** - название сетевого интерфейса с которого снимать dump;
* **-w** - имя файла, куда сохранять дамп;
* **host** - имя хоста трафик с которого снимать.

---

## Разрешение приложению слушать порты ниже 1024

```bash
sudo setcap cap_net_bind_service=+ep <app_path>
```

---

## Увеличение используемого диапазона портов

```bash
sysctl net.ipv4.ip_local_port_range="15000 61000"
```

Без части "=" и дальше покажет текущую установку.

Чтобы прописать настройку в системе постоянно нужно добавить в файл `/etc/sysctl.conf` следующую строку:

```bash
net.ipv4.ip_local_port_range = 1024 65535
```

---

## Запуск процесса в фоне с перенаправлением вывода в указанный файл

```bash
nohup some_command &> nohup2.out&
```

---

## Проверка DNS

```bash
systemd-resolve --status
```

---

## Дефрагментация

Для проверки фрагментации и дефрагментации разделов (если, вдруг, такое понадобится) используется утилита `e4defrag`.
Проверить фрагментацию можно следующей командой:

```bash
sudo e4defrag -c /dev/sdd1
```

Где **/dev/sdd1** - раздел, который проверяется.

Будет выведена примерно следующая информация:

```bash
Total/best extents                             792579/758250
 Average size per extent                        226 KB
 Fragmentation score                            1
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This device (/dev/sdd1) does not need defragmentation.
 Done.
```

Нужно смотреть на **Fragmentation score**. Если он в диапазоне 0-30 - дефрагментация не требуется.

Для выполнения дефрагментации нужно выполнить следующую команду:

```bash
sudo e4defrag -v /dev/sdd1
```

где **v** - вывод расширенной информации (можно не указывать).

---

## Копирование/перемещение заданного количества файлов из одного каталога в другой

Допустим, хотим переместить/скопировать 10 файлов. Команда выполняется в каталоге из которого надо копировать/переместить файлы.

### Перемещение

```bash
ls . | head -10 | xargs mv -t "$dst_dir"
```

### Копирование**

```bash
ls . | head -10 | xargs cp -t "$dst_dir"
```

### Можно использовать find

```bash
find ./  -printf "%f\n" | head -n 10 | xargs -I {} mv {} dst_dir
```

### Чтобы не пыталось копировать файл "." лучше задать фильтр файлов

Например:

```bash
find ./  -name "*.json" | head -n 10 | xargs -I {} mv {} dst_dir
```

### Также можно использовать параметр -exec

```bash
find . -name "*.json" -exec cp {} ../dst-dir/ \;
```

---

## Изменение временной зоны из консоли

```bash
sudo dpkg-reconfigure tzdata
```

---

## Создание архива zip

```bash
zip -r output_file.zip file1 folder1
```

---

## Настройка максимального количества открытых файлов

Для настройки на время сеанса выполнить команду: `ulimit -n 999999`.
Чтобы задать постоянно, нужно в файле `/etc/sysctl.conf` прописать:

```bash
fs.file-max = 999999
```
