Linux найти и выбрать с помощью shuf случайное фото jpg jpeg png

Бывает полезно из найденого списка файлов случайным образом получить один.
Это можно сделать такой командой:

# find /home/taras/Pictures/ -type f -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' | shuf -n 1

Linux sysstat iostat просмотр отчета о CPU и вводе/выводе устройств и партиций

В Red Hat Enterprise, CentOS, Fedora и других Linux системах есть замечательный пакет sysstat

# yum info sysstat

Loaded plugins: rhnplugin, security
This system is receiving updates from RHN Classic or RHN Satellite.
drivesrvr | 951 B 00:00
Installed Packages
Name : sysstat
Arch : x86_64
Version : 7.0.2
Release : 12.el5
Size : 418 k
Repo : installed
Summary : The sar and iostat system monitoring commands.
URL : http://perso.orange.fr/sebastien.godard/
License : GPL
Description: This package provides the sar and iostat commands for Linux. Sar and
: iostat enable system monitoring of disk, network, and other IO
: activity.

В его состав входит утилита iostat – Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions.

Пример использования:

# iostat -dh

-d – The -d option is exclusive of the -c option and displays only the device utilization report.
-h – Display the NFS report more human readable.

Все опции можно посмотреть в man iostat

Linux IPTables firewall просмотреть и удалить правило

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

# /sbin/iptables -vnL --line-numbers

-v, –verbose – Verbose output. This option makes the list command show the interface name, the rule options (if any), and the TOS masks. The packet and byte counters are also listed, with the suffix ’K’, ’M’ or ’G’ for 1000, 1,000,000 and 1,000,000,000 multipliers respectively (but see the -x flag to change this). For appending, insertion, deletion and replacement, this causes detailed information on the rule or rules to be printed.

-n, –numeric – Numeric output. IP addresses and port numbers will be printed in numeric format. By default, the program will try to display them as host names, network names, or services (whenever applicable).

-L, –list [chain] – List all rules in the selected chain. If no chain is selected, all chains are listed. As every other iptables command, it applies to the specified table (filter is the default), so NAT rules get listed by
iptables -t nat -n -L
Please note that it is often used with the -n option, in order to avoid long reverse DNS lookups. It is legal to specify the -Z (zero) option as well, in which case the chain(s) will be atomically listed and zeroed. The exact output is affected by the other arguments given. The exact rules are suppressed until you use
iptables -L -v

–line-numbers – показать номера строк, чтобы потом можно было удалить какое-то из правил. When listing rules, add line numbers to the beginning of each rule, corresponding to that rule’s position in the chain.

Для просмотра всех возможных опций см. man iptables

Для того, чтобы удалить правило из IPTables служит команда D.
Например, чтобы удалить правило N из цепочки INPUT выполняем:

# /sbin/iptables -D INPUT N

Linux скачать и распаковать rpm

В rpm-based ОС Linux иногда бывает полезным скачать и распаковать какой-либо rpm.

Это можно сделать командами:

# wget http://domain.com/some.rpm
# rpm2cpio some.rpm | cpio -idv

Что распакует содержимое some.rpm в текущую папку.

Linux создать изменить дату создания файла touch

В Linux можно создать новый файл или изменить дату создания существующего файла с помощью команды touch

# touch --date="2013-04-02" /home/plmw/test_file_2013-04-02

Проверяем созданный файл:

# ls -Alh /home/plmw/test_file_2013-04-02

-rw-r–r– 1 plmw plmw 0 Apr 2 00:00 test_file_2013-04-02

Linux удалить из файла строки начинающиеся с

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

1. С использованием sed:

# sed '/^\.\/var\/cache/d' /home/taras/website_backups/changed_files.log > /home/taras/website_backups/changed_files_2.log

2. С помощью egrep:

# egrep -v '^\.\/var\/cache' /home/taras/website_backups/changed_files.log > /home/taras/website_backups/changed_files_3.log

Изменения можно проверить с помощью команды diff:

# diff /home/taras/website_backups/changed_files.log /home/taras/website_backups/changed_files_2.log
# diff /home/taras/website_backups/changed_files.log /home/taras/website_backups/changed_files_3.log

Linux route: заблокировать IP

В Linux можно блокировать IP злоумышленника с помощью команды route

Например так:

# route add IP.address reject

Просмотреть таблицу маршрутов можно командами:

# route

или

# netstat -nr

и можно добавить в конец команды |grep IP.address, чтобы вывести только эту запись

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

# route del -host IP.address reject

Linux ps и kill: найти и убить процесс

Что нужно сделать, чтобы найти и убить процессы в Linux?
Как подсказал sin в предыдущем посте: Linux ps: просмотр текущих процессов системы можно найти все процессы httpd с помощью команды:

# ps auxwww |grep -v grep |grep "httpd"

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2981 0.0 0.4 46140 12368 ? Ss Feb22 0:00 /usr/sbin/httpd
apache 10353 0.0 0.1 31124 4412 ? S Mar27 0:00 /usr/sbin/httpd
apache 10359 0.0 0.8 64512 26752 ? S Mar27 1:23 /usr/sbin/httpd
apache 10360 0.0 0.9 65080 27268 ? S Mar27 0:14 /usr/sbin/httpd
apache 10361 0.0 0.8 63952 26296 ? S Mar27 0:49 /usr/sbin/httpd
apache 10362 0.0 0.8 65072 27096 ? S Mar27 0:14 /usr/sbin/httpd
apache 10363 0.0 0.9 65300 27208 ? S Mar27 0:50 /usr/sbin/httpd
apache 10364 0.0 0.9 65108 27916 ? S Mar27 0:13 /usr/sbin/httpd
apache 10366 0.0 0.8 63688 25940 ? S Mar27 0:15 /usr/sbin/httpd
apache 10367 0.0 0.8 64484 26584 ? S Mar27 0:47 /usr/sbin/httpd
apache 18142 0.1 0.8 63740 25796 ? S 10:00 1:12 /usr/sbin/httpd
apache 18362 0.0 0.8 64820 25928 ? S 12:02 0:03 /usr/sbin/httpd
apache 18363 0.0 0.8 64256 26024 ? S 12:02 0:02 /usr/sbin/httpd
apache 18364 0.0 0.8 64812 26492 ? S 12:02 0:03 /usr/sbin/httpd
apache 18365 0.0 0.8 63720 25752 ? S 12:02 0:03 /usr/sbin/httpd
apache 18368 0.0 0.8 63500 26096 ? S 12:02 0:02 /usr/sbin/httpd
apache 18369 0.0 0.8 64880 26740 ? S 12:02 0:03 /usr/sbin/httpd
apache 18370 0.0 0.8 64248 25984 ? S 12:03 0:03 /usr/sbin/httpd
apache 18371 0.0 0.8 63924 25276 ? S 12:03 0:03 /usr/sbin/httpd
apache 29707 0.0 0.9 65092 27336 ? S Mar27 1:50 /usr/sbin/httpd
apache 29708 0.0 0.9 65752 27972 ? S Mar27 0:44 /usr/sbin/httpd
apache 29709 0.0 0.8 64764 26844 ? S Mar27 0:44 /usr/sbin/httpd

Убиваем процессы вручную:

# kill -s 9 29708 29707 ...

Или же пишем скрипт: /root/bin/kill_httpd.sh

#!/bin/bash

OLD_HTTPD_PIDS="$(ps auxwww |grep "httpd" |grep -v "grep" | awk '{print $2}')"

for FPID in ${OLD_HTTPD_PIDS}
do
echo "Killing httpd processe pid: ${FPID}"
kill -s 9 ${FPID}
done

Делаем его исполняемым:

# chmod -v 755 /root/bin/kill_httpd.sh

И запускаем:

# /root/bin/kill_httpd.sh

Linux ps: просмотр текущих процессов системы

Если нужно посмотреть запущен ли какой-либо процесс в системе, то для этих целей пригодится утилита Linux ps.
Например, проверить процесс веб сервера Apache (httpd) можно такой последовательностью команд:

# ps auxwww| head -n 1; ps auxwww |grep httpd |grep -v grep

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 21215 0.0 0.1 524056 30560 ? Ss 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21216 0.0 0.0 308392 14032 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21218 0.0 0.1 626980 22864 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21219 0.0 0.1 633584 30140 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21220 0.0 0.1 627236 23080 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21221 0.0 0.2 641900 33124 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21222 0.0 0.1 626840 22180 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21223 0.0 0.1 630368 26056 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21224 0.0 0.1 629436 24968 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND
apache 21225 0.0 0.1 630712 27036 ? S 16:59 0:00 /usr/sbin/httpd -DFOREGROUND

Опция aux команды ps отображает информацию о всех процессах.
Другие возможные опции, можно посмотреть на man странице командой:

# man ps

Linux finger: просмотр информации о пользователях системы

В Linux есть удобная утилита finger, которая позволяет просмотреть информацию о пользователях системы.
В Red Hat – based операционных системах типа: Fedora, CentOS, Red Hat Enterprise и др. ее можно установить с помощью пакетного менеджера yum.

Запускаем команду от имени администратора root на установку finger:

# yum install finger

Пример вывода информации командой finger:

# finger taras

Login: taras Name: (null)
Directory: /home/taras Shell: /bin/bash
Last login Mon Month Day Hours:Minutes (Time zone name) on pts/0 from IP_address_or_domain_name
No mail.
No Plan.

Пример вывода информации о пользователе, которого не существует в системе:

# finger tars

finger: tars: no such user.

Linux sysctl: изменение параметров системы

Для того, чтобы просмотреть текущее состояние парамерта системы Linux sysctl, например net.ipv4.netfilter.ip_conntrack_max, выполняем команду:

# sysctl net.ipv4.netfilter.ip_conntrack_max

Чтобы установить новое значение на время текущей сессии:

# sysctl net.ipv4.netfilter.ip_conntrack_max=65535

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

net.ipv4.netfilter.ip_conntrack_max=65535

Или можно сделать так:

# echo "net.ipv4.netfilter.ip_conntrack_max=65535" >> /etc/sysctl.conf
# /sbin/sysctl -p

Выполнять подобные команды можно только с правами администратора системы root.

Если необходимо получить одну строку №N из файла /path/to/file, то это можно сделать с помощью команды:

Если необходимо получить одну строку №N из файла /path/to/file, то это можно сделать с помощью команды:

# head -n N /path/to/file |tail -n 1

Linux IPTables: ограничить количество HTTP запросов с одного IP в минуту

Недавно возникла необходимость в Linux средствами IPTables firewall ограничить количество запросов с одного IP в минуту так как веб вервер жестко атаковали несколько дней подряд. Выручило правило:

-A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset

Добавил его над правилом, которое разрешает 80-й порт.
Сохранил файл /etc/sysconfig/iptables

И перезапустил сервис iptables командой:

# /sbin/service iptables restart

После чего ситуация на сервере нормализовалась.