Соответственно, дабы защитить процесс от “убиения”, необходимо узнать PID этого процесса и записать в его файл oom_adj значение -17. Например, для процесса sshd, можно использовать команду:
Ошибка 0x0000005 при запуске практически всех приложений в Windows 7 x64
Причина кроется в обновлениях KB2859537 и KB2872339 (или одном из них) на некоторых системах Windows 7 x64.
Но апплет Центра обновлений запустить нельзя, т. к. все 32-битные приложения не запускаются в системе. Чтобы удалить обновления, запускаем командную строку с правами Администратора и удалем обновления командами:
wusa.exe /uninstall /kb:2859537
wusa.exe /uninstall /kb:2872339
Перезагружаемся – и система должна работать как раньше.
Кстати, не забываем скрыть эти обновления после перезагрузки дабы потом случайно опять их не поставить (в Центре обновления Windows правой кнопкой на обновлении – Скрыть обновление)
Как убрать панель рекламы в KMPlayer 3.7
Но есть способ убрать эту новую фишку с рекламой.
Запускаем от имени Администратора (Run as administrator) ваш любимый текстовый редактор (Notepad++, например), открываем файл C:WindowsSystem32driversetchosts и дописываем в конец следующее:
127.0.0.1 player.kmpmedia.net
Update.
Для KMPlayer версии 3.8+ необходимо вместо добавления в hosts добавить адрес сайта в Опасные в Свойствах обозревателя:
Панель управления – Все элементы панели управления – Свойства браузера – Безопасность – Опасные сайты – Сайты – Добавить в зону следующий узел – вставить player.kmpmedia.net – Добавить – Закрыть – ОК
Полезные Bash Shell команды и однострочные скрипты
Статья будет дополняться.
1. Сделать что-либо со всеми файлами в папке, например, распаковать все zip архивы в текущей папке:
for f in *.zip ; do unzip $f ; done
2. То же самое, только с файлами из поддиректорий текущей. Например, установить rpm пакеты:
for D in *; do [ -d “${D}” ] && yum install ${D}/*.rpm ; done
3. Добавить пользователя в группу:
usermod -a -G group user
4. Как расшарить содержимое папки по протоколу HTTP.
Заходим в нужную папку и выполняем команду:
python -m SimpleHTTPServer 8080
Далее зайдя в браузере по адресу http://ip_of_that_server:8080, мы увидим содержимое с возможностью навигации и скачивания файлов:
5. Получение информации о Virtual Hosts для apache2 в Debian Linux:
apache2ctl -t -D DUMP_VHOSTS
6. Создание файла заданного размера:
truncate -s 14M filename
sed -Ei ‘s/foo|bar|baz/foobar/g’ file
8. Подмонтировать CD-ROM с указанием типа файловой системы:
mount -t iso9660 /dev/scd0 /media/cdrom
Анализ падения ядра в Linux (kernel crash dump)
Итак, для сохранения дампа при падении ядра в Linux или kernel panic, необходимо настроить сервис kdump и установить несколько дополнительных пакетов.
Сам механизм представляет собой дополнительное маленькое ядро, смысл существования которого состоит в том, чтобы после падения основного ядра системы, перехватить управление, сохранить дамп и перезагрузить систему.
Для Fedora Linux устанавливается всё хозяйство просто командой:
yum install –enablerepo=fedora-debuginfo –enablerepo=updates-debuginfo kexec-tools crash kernel-debuginfo
А вот для Oracle Linux 6.4 чуть сложнее:
yum install crash -y
export DLP=”https://oss.oracle.com/ol6/debuginfo”
Команды приведены для текущего ядра системы. Если нужны пакеты для других версий ядра, то нужно указать версию вместо `uname -r`.
Далее, необходимо добавить в конфиг загрузчика (/boot/grub/grub.conf или /boot/efi/EFI/redhat/grub.conf – зависит от того, используется UEFI при загрузке сервера или нет): параметр ядра “crashkernel=128M“. Цифра указывает, сколько ОЗУ резервируется под резервное ядро. Через @ можно указать так же смещение в памяти, если необходимо. Например 128M@16 – зарезервирует 128 Мб ОЗУ начиная с физического адреса 0x01000000 (16MB).
Теперь надо включить службу kdump для автозагрузки:
chkconfig kdump on
Также можно подредактировать конфиг /etc/kdump, но он и по-умолчанию достаточно хорош.
Теперь перезагрузим сервер, чтобы ядро загрузилось с новым параметром:
shutdown -r now
Проверяем, правильно загрузилось ядро с нашими параметрами:
cat /proc/cmdline
Также проверим, работает ли kdump:
service kdump status
Kdump is operational
Теперь, искусственно вызовем kernel panic командой:
echo c > /proc/sysrq-trigger
При этом будет подгружаться маленькое резервное ядро и сохранит дамп. На сохранение дампа нужнон екторое время, потому в определенный момент может показаться, что ядро подвисло – нужно дождаться окончания процесса.
После перезагрузки, мы сможем найти наши дампы (по-умолчанию) в папке /var/crash. Запускаем анализатор дампа:
После запуска crash покажет нам некоторую полезную инфу и даст свою командную строку:
Помощь по командам: help или help command
Но, чтобы создавались дампы от процессов необходимо подредактировать файл /etc/limits.conf, например, командой:
sed -i ‘s/.. *soft *core *0/*tsoftttcorettunlimited/g’ /etc/security/limits.conf
Всем удачи и поменьше багов! 🙂
Запуск графических приложений на удаленной Linux-машине с помощью Putty и Xming (export display)
Для решения этой задачи выполняем следующее.
1. На сервере устанавливаем пакеты xauth и xterm. Например, для Oracle Linux (или другого RHEL):
yum install xauth xterm
2. Также, нужно проверить, включено ли X11 Forwarding в конфигурационном файле SSH-демона:
nano /etc/ssh/sshd_config
X11Forwarding yes
3. Eсли вы заходите с помощью Windows-машины, то вам необходимо установить Xming – X-эмулятор для форточек. Ну и, собсно, сам Putty – ssh-клиент для Windows.
Установка Xming тривиальна, по типу далее, далее, далее. Только поставить галочку, что мы будем использовать его вместе с Putty. Сам Putty так же устанавливаем.
4. Запускаем Xming, он свернется в трей и после этого запускаем Putty и на вкладке Connection / SSH / X11 отмечаем галочку Enable X11 forwarding, а также дописываем в поле X display location значение localhost:0.
4. Далее подключаемся к удаленному серверу и запускаем наше приложение. Например, Solaris Studio:
/opt/oracle/solarisstudio12.3/bin/solstudio
Когда всё подгрузиться, вы увидите заветное окошко:
Для тех, кто работает в Linux-среде всё еще проще. Запускать приложения на удаленной машине можно, добавляя к подключению по ssh ключ -X.
Полезные команды Asterisk (буду дополнять)
Если нужно принять SMS-ку, а в консоли (asterisk -rvv) пишет следующее:
ERROR[15627]: at_response.c:1420 at_response_smmemfull: [dongle0] SMS storage is full
то, логично – нам необходимо почистить память для смс-ок.
- память SIM
- память модема
Для очистки памяти модема применяем в консоли астериска последовательно команды:
Консолька нам выдасть что-то типа:
Или здесь: http://www.smartposition.nl/resources/sms_pdu.html
<dongle_name> 0 Free 22 0 0 life:) E173 21.157.71.00.388 <imei_number> <imsi_number> <tel_number>
6. Прерывание определенных звонков.
Вначале отобразим инфо о текущих звонках:
Допустим, мы хотим обрубить звонок пользователю 4003 (выделен). Выполняем команду:
Теперь можно увидеть, что звонок завершен.
(Источник)
7. Отслеживание активных звонков в Asterisk
В консоли Linux набираем:
Проверка доступности портов между двумя Linux-машинами (для Solaris тоже работает)
Один скрипт – сервер. Слушает заданный порт и пишет в консоль информацию о клиентах. А второй – клиентский скрипт – стучится по заданному IP в заданный порт и возвращает ответ от сервера (если порт доступен).
Серверный скрипт.
#!/usr/bin/env python
import socket, sys
# Server address and buffer size
TCP_IP = '0.0.0.0'
BUFFER_SIZE = 1024
# Usage string
usage = "server.py PORT"
# Check number of arguments and print usage if not enough arguments
if (len(sys.argv) < 2):
print(usage)
sys.exit(0)
TCP_PORT = int(sys.argv[1])
# Create socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
# Listen for client connection until Ctrl+C will be pressed
while 1:
c = s.accept()
cli_sock, cli_addr = c
cli_sock.send("Hello, person from %s"%(str(cli_addr)))
cli_sock.close()
print("received data from:", str(cli_addr))
Запуск. Копируем в текстовый файл вышенаписанный код и запускаем:
python server.py <port>
Клиентский скрипт.
#!/usr/bin/env python
import socket, sys
usage = "client.py IP PORT"
# Check number of arguments and print usage if not enough arguments
if (len(sys.argv) < 3):
print(usage)
sys.exit(0)
TCP_IP = sys.argv[1]
TCP_PORT = int(sys.argv[2])
BUFFER_SIZE = 1024
# Create socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
# Recieving response from the server
data = s.recv(BUFFER_SIZE)
s.close()
print("received data:", data)
Запуск. Копируем в текстовый ф
айл вышенаписанный код и запускаем:
python client.py <server_IP> <server_port>
Как сохранить кадр из видео в Linux
mplayer -vo png -ss 00:30:00 -frames 1 video-file.mp4
Это даст нам следующее:
-vo png – формат изображения png
-ss 00:25:00 – кадр будет взят из 25й минуты фильма (формат ЧЧ:ММ:СС)
-frames 1 – сохранит только 1 кадр, в текущую директорию.
video-file.mp4 – путь к файлу содержащему видео (кодек видео должен присутствовать в системе)
Использование iperf для тестирования мультикаста
tcpdump -i bond0.666 udp -nn port 4444
но он не делает join к мультикаст группе и, в зависимости от настройки сетевого оборудования, вы можете мультикаст и не увидеть.
Лучше использовать утилиту iperf. Она служит для анализа быстродействия сети, и для наших целей отлично подходит.
yum install http://pkgs.repoforge.org/iperf/iperf-2.0.4-1.el6.rf.x86_64.rpm
или
rpm -Uhv http://pkgs.repoforge.org/iperf/iperf-2.0.4-1.el6.rf.x86_64.rpm
Далее, если адрес мультикаст группы 239.200.1.1, а порт 4444, то делаем команду и смотрим результат:
iperf -s -u -B 239.200.1.1 -i 1 -p 4444
здесь
- -s -режим сервера,
- -u – использовать UDP,
- -i 1 – выводить информацию каждую секунду,
- -B и -p – адрес нашего мультикаста.
Полезные команды для мультикаста:
Посмотреть подписку по группам:
netstat -gn
или
ip maddr show
Дамп по интерфейсу и группе мультикаста:
tcpdump -n -nn -i eth0 host 239.31.82.10 tcpdump -i p1p1.1302 -s0 -vv net 224.0.0.0/4
Иногда необходимо поменять системные перменные:
sysctl -ar '.rp_filter' net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.em1.rp_filter = 0 net.ipv4.conf.em2.rp_filter = 0 net.ipv4.conf.em3.rp_filter = 0 >net.ipv4.conf.em4.rp_filter = 0 net.ipv4.conf.lo.rp_filter = 0 net.ipv4.conf.p1p1.rp_filter = 0 net.ipv4.conf.p1p1/1302.rp_filter = 0 net.ipv4.conf.p1p1/2202.rp_filter = 0 net.ipv4.conf.p1p2.rp_filter = 0 net.ipv4.conf.p1p2/1402.rp_filter = 0 net.ipv4.conf.p1p2/2202.rp_filter = 0
Изменить значение переменной sysctl:
sysctl -w net.ipv4.conf.em3.rp_filter=0
Включить маршрутизацию пакетов:
sysctl -w net.ipv4.ip_forward=1
Кофиги sysctl могут быть в:
- /run/sysctl.d/*.conf
- /etc/sysctl.d/*.conf
- /usr/local/lib/sysctl.d/*.conf
- /usr/lib/sysctl.d/*.conf
- /lib/sysctl.d/*.conf
- /etc/sysctl.conf
RHEL выключить мультикаст на интерфейсе:
ip link set multicast off dev br0
RHEL включить мультикаст на интерфейсе:
ip link set multicast oт dev br0
Проверить включен ли мультикаст:
ip link show br0 8: br0: mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000
Включить мультикаст на фаерволле (по-умолчанию выключен):
firewall-cmd --zone=zone-name --add-protocol=igmp
Выключить SELinux:
nano /etc/selinux/config
Источники:
- https://www.cyberciti.biz/faq/reload-sysctl-conf-on-linux-using-sysctl/
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-enabling_ip_multicast_with_igmp
- https://unix.stackexchange.com/questions/299163/app-cannot-receive-multicast-packets-on-centos-7
- https://superuser.com/questions/324824/linux-built-in-or-open-source-program-to-join-multicast-group
- https://serverfault.com/questions/163244/linux-kernel-not-passing-through-multicast-udp-packets/216568
- https://support.citrix.com/article/CTX116493