Если по непонятным причинам web сервер повисает, а времени на разбирательства нет, то неплохим вре́менным решением будет автоматический перезапуск web сервера. Такая ситуация сложилась с одним проектом у знакомого, администратор которого накануне уехал в отпуск. Вот скрипт который отлично справился с задачей.
Continue reading Простой скрипт автоматического рестарта http сервера
Category: Операционные системы
Всё что касается персональных компьютеров
bash, парсинг имени файла и пути к нему
bash имеет встроенные функции манипуляции со строками. В частности функции удаления подстрок.
${string#substring} — удаляет кратчайшее вхождение подстроки $substring от начала строки $string.
${string##substring} — удаляет длиннейшее вхождение подстроки $substring от начала строки $string.
Аналогичным образом действует оператор % но действует от конца строки.
${string%substring} — удаляет кратчайшее вхождение подстроки $substring в конце строки $string.
${string%%substring} — удаляет длиннейшее вхождение подстроки $substring в конце строки $string.
При помощи этих функций можно получить имя файла, путь к файлу и его расширение:
# переменная для работы содержащая полное имя и путь к файлу fullpathname="/root/temp/file.tar.gz" # Получить путь (часть от начала строки до последнего слева слеша) $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%/*}" /root/temp # Получить имя файла (часть от самого правого слеша до конца строки) $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname##*/}" file.tar.gz # Получить строку левее самой левой точки # !!! Если точка будет находиться в пути, то отрежет по ней $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%%.*}" /root/temp/file # Получить путь и имя файла без расширения (удаляет все правее самой правой точки) $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.*}" /root/temp/file.tar # Получить расширение (правая часть от последней слева точки в имени файла) $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname##*.}" gz # Все расширения (правая часть от первой слева точки в имени файла) $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname#*.}" tar.gz # Удаление любого расширения $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.*}" /root/temp/file.tar # Удаление расширения .gz $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.gz}" /root/temp/file.tar # Замена расширения .gz на .doc $ fullpathname="/root/temp/file.tar.gz"; echo "${fullpathname%.gz}.doc" /root/temp/file.tar.doc
Ниже для наглядности небольшой рисунок, который, возможно, поможет лучше запомнить работу этих операторов.
fullpathname="/root/temp/file.tar.gz" |--------------------| - fullname ^--------^ - path ^---------^ - name ^^ - extension #>> - от начала короткое удаление ##>>>> - от начала длинное удаление <<% - от конца короткое удаление <<<<%% - от конца длинное удаление
По материалам Advanced Bash-Scripting Guide
apache не выполняет php скрипт, а отображает его содержимое.
<?php phpinfo(); ?>
Современные версии php по умолчанию не обрабатывают короткий тэг. То есть, надо писать не
<? phpinfo(); ?>
но
<?php phpinfo(); ?>
Настройка находится здесь:
/etc/php.ini
short_open_tag = Off
Нужно включить On посде этого будет обрабатываться короткий открывающий тэг.
pure-ftpd не создаёт домашний каталог виртуального пользователя
Как описано в документации опция CreateHomeDir разрешает автоматически при первом входе на ftp создавать домашние каталоги для виртуальных пользователей pure-ftp при каждом входе (если каталог не существует).
После установки в конфиге /etc/pure-ftpd/pure-ftpd.conf опций
VerboseLog yes CreateHomeDir yes
я ожидал что домашние каталоги пользователей будут создаваться. Однако они не создавались ни при добавлении виртуального пользователя ни при логине пользователя. А в логе /var/log/messages появляются такие вот скупые записи:
May 28 18:12:09 b01 pure-ftpd: (?@127.0.0.1) [INFO] New connection from 127.0.0.1 May 28 18:12:09 b01 pure-ftpd: (?@127.0.0.1) [ERROR] Home directory not available - aborting
Continue reading pure-ftpd не создаёт домашний каталог виртуального пользователя
Удаление vg и lv после физического отключения диска
Случилось так, что я глянул в mount и не увидел примонтированных LV со внешнего диска и спокойно выдернул usb коннектор того самого диска. И только через пару дней обнаружил, что команды lvs и vgs проходят с ошибками. Это были активные vg о которых я забыл перед физическим отключением диска. Так как тома́ с данными были предварительно размонтированы то сами данные на отключённом диске были в порядке. Меня раздражало несколько этих сообщений об ошибке. Нужно было их убрать. И конечно без перезагрузки сервера.
[root@csa01 etc]# vgs /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 2000393535488: Input/output error /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 2000393592832: Input/output error /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 0: Input/output error /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 4096: Input/output error VG #PV #LV #SN Attr VSize VFree VG_CSA01_DATA 1 3 0 wz--n- 7.28t 4.79t VG_CSA01x 1 5 0 wz--n- 465.54g 421.68g
Continue reading Удаление vg и lv после физического отключения диска
Как распаковать rpm пакет не устанавливая его
Бывает нужно залянуть в исходник, а ставить весь пакет не хочется.
$ rpm2cpio somepacket.rpm | cpio -idmv
zabbix-server ошибки в логе сервера
На машине с zabbix-server в логе обнаружилось много ошибок:
/var/log/zabbix/zabbix_server.log
1735:20130402:101321.073 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.57</strong>] failed: host [v03-b] not found 1732:20130402:101324.512 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.6</strong>] failed: host [ns1] not found 1737:20130402:101325.918 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.56</strong>] failed: host [v03-a] not found 1738:20130402:101354.219 Sending list of <span style="text-decoration: underline;">active checks</span> to [<strong>10.8.12.220</strong>] failed: host [mgmt01] not found
РЕШЕНИЕ
Входить на каждый клиент по IP из лога сервера и добавлять в конфигурацию zabbix-agentd опцию отключеня активной проверки и рестартовать демона.
ssh root@10.8.12.57 echo DisableActive=1 >> /etc/zabbix/zabbix-agentd.conf service zabbix-agent restart
Проверка прав доступа к файлам Linux
Суть проверки проста: от имени пользователя чьи права проверяются нужно запустить команды
Проверка прав на чтение
su -l login-for-user find / -type d \( -wholename '/dev/*' -o -wholename '/sys/*' -o -wholename '/proc/*' \) -prune -o -exec test -r {} \; -exec echo {} is readable \; 2>/dev/null
Проверка прав на запись
su -l login-for-user find / -type d \( -wholename '/dev/*' -o -wholename '/sys/*' -o -wholename '/proc/*' \) -prune -o -exec test -w {} \; -exec echo {} is writable \; 2>/dev/null
Чтобы разбрать результат по полям нужно через конвеер отправить вывод команде:
cut -d'/' -f1,2,3 | sort -u
Разновидность команды (на современных версиях find):
su -l login-for-user find / ! -writable find / -writable
Увеличение размера файловой системы ext4
Один мой знакомый купил виртуалку у хостера с предустановленной системой. И почему-то постеснялся побеспокоить хостера с вопросом, а где же его заявленные 100G. Хостер очевидно движимый самыми добрыми намерениями предустановил виртуалку на маленький диск оставив остальное пространство свободным. Я так понимаю чтобы пользователь смог создать нужные разделы. Ничего сложного здесь нет. Хотя самым муторным для меня оказалось попасть в нужный размер чтобы занять всё доступное пространство.
[root@maxbel ~]# vgdisplay --units S vg_maxbel Free PE / Size 23072 / 189005824 Se
[root@maxbel ~]# lvextend -L +189005824s /dev/vg_maxbel/lv_root
Проверяем что место полностью распределено
[root@maxbel ~]# vgs --units s vg_maxbel VG #PV #LV #SN Attr VSize VFree vg_maxbel 1 3 0 wz--n- 208683008S 0S
Изменяем размер на лету (online)
[root@maxbel ~]# resize2fs -p /dev/vg_maxbel/lv_root
наслаждаемся результатом:
[root@maxbel var]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_maxbel-lv_root 94G 971M 88G 2% / tmpfs 504M 0 504M 0% /dev/shm /dev/vda1 485M 30M 431M 7% /boot /dev/mapper/VolGroup00-LogVol00 30G 3.7G 25G 13% /mnt/vdb1
Проверка системных файлов Windows XP/2003
При помоши утилиты Sfc.exe можно выполнить проверку защищённых системных файлов на предмет каких либо повреждений.
Утилита запускается из консоли. Из терминального окна не запустится.
Она требует установочный диск с файлами.
Ключи
sfc [/Scannow] [/Scanonce] [/Scanboot] [/Revert] [/Purgecache] [/Cachesize=x] Scannow - проверить незамедлительно Scanboot - проверить однократно при загрузке Scanboot - проверять при каждой загрузке Revert - не проверять при каждой загрузке Purgecache - очистить файловый кеш и немедленно выполнить проверку Cachesize=x - установить размер файлового кэша равным x мегабайтам (МБ)