import os
st = os.statvfs("/home")
du = st.f_bsize * st.f_bavail
print(du)
Получим значение в байтах, чтобы получить значение, например, в Мб:
du = st.f_bsize * st.f_bavail / 1024 / 1024
import os
st = os.statvfs("/home")
du = st.f_bsize * st.f_bavail
print(du)
Получим значение в байтах, чтобы получить значение, например, в Мб:
du = st.f_bsize * st.f_bavail / 1024 / 1024
echo “Тело письма” | mail -s “Тема письма” recipient@example.com
или, чтобы вставить содержимое тектового файла как тело письма:
mail -s “Тема письма” recipient@example.com < /var/log/some.log
Параметры команды:
-s subject – тема письма
-c email-address – адрес для копии
-b email-address – адрес для невидимой копии
Соответственно, дабы защитить процесс от “убиения”, необходимо узнать PID этого процесса и записать в его файл oom_adj значение -17. Например, для процесса sshd, можно использовать команду:
Причина кроется в обновлениях KB2859537 и KB2872339 (или одном из них) на некоторых системах Windows 7 x64.
Но апплет Центра обновлений запустить нельзя, т. к. все 32-битные приложения не запускаются в системе. Чтобы удалить обновления, запускаем командную строку с правами Администратора и удалем обновления командами:
wusa.exe /uninstall /kb:2859537
wusa.exe /uninstall /kb:2872339
Перезагружаемся – и система должна работать как раньше.
Кстати, не забываем скрыть эти обновления после перезагрузки дабы потом случайно опять их не поставить (в Центре обновления Windows правой кнопкой на обновлении – Скрыть обновление)
Но есть способ убрать эту новую фишку с рекламой.
Запускаем от имени Администратора (Run as administrator) ваш любимый текстовый редактор (Notepad++, например), открываем файл C:WindowsSystem32driversetchosts и дописываем в конец следующее:
127.0.0.1 player.kmpmedia.net
Update.
Для KMPlayer версии 3.8+ необходимо вместо добавления в hosts добавить адрес сайта в Опасные в Свойствах обозревателя:
Панель управления – Все элементы панели управления – Свойства браузера – Безопасность – Опасные сайты – Сайты – Добавить в зону следующий узел – вставить player.kmpmedia.net – Добавить – Закрыть – ОК
5. Получение информации о Virtual Hosts для apache2 в Debian Linux:
apache2ctl -t -D DUMP_VHOSTS
6. Создание файла заданного размера:
truncate -s 14M filename
Итак, для сохранения дампа при падении ядра в 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
sed -i ‘s/.. *soft *core *0/*tsoftttcorettunlimited/g’ /etc/security/limits.conf
Всем удачи и поменьше багов! 🙂
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.
6. Прерывание определенных звонков.
Вначале отобразим инфо о текущих звонках:
Допустим, мы хотим обрубить звонок пользователю 4003 (выделен). Выполняем команду:
Теперь можно увидеть, что звонок завершен.
(Источник)
7. Отслеживание активных звонков в Asterisk
В консоли Linux набираем:
Один скрипт – сервер. Слушает заданный порт и пишет в консоль информацию о клиентах. А второй – клиентский скрипт – стучится по заданному 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>