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.

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

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

FreelanceHunt.com
 
Copyright © 2013 - 2019 Шкоденко Тарас. Программирование и разработка сайтов, Киев