и вообще эти проверки не нужны --- сделайте всегда restartCode:if [ -n "`/bin/ps | grep rtorrent | grep -v grep`" ] ; then
Что хочу сделать:
В post-mount хочу загнать скрипт, проверяющий:
1. Смонтирована ли папка opt на флешке в /opt , если нет - монтировать, если да - ничего не делать.
2. Наличие файла /opt/swap.file , если не находит - сделать его и смонтировать, если нашла но не смонтирован - смонтировать, если уже смонтирован - ничего не делать.
3. Запущены ли процессы rtorrent и smbd, если да - перезапускать, нет - просто запускать.
Пытался сделать так:
выдаёт ошибки в 18 и 23 строчках, монтирует папку, но при подключении ещё одного диска - размонтирует и флешку и диск из /tmp/mnt , swap не монтирует, процессы не запускает/перезапускает.Code:#!/bin/sh if ! [ -d /opt/bin ]; then mount -o bind,rw,sync,noatime /tmp/mnt/disc0_1/opt /opt fi if ! [ -s /opt/swap.file ]; then { dd if=/dev/zero of=/opt/swap.file bs=1M count=70 && mkswap /opt/swap.file && swapon /opt/swap.file } else { swap=`free -o | grep Swap` swap1="Swap: 0 0 0" if $swap == $swap1 then mkswap /opt/swap.file && swapon /opt/swap.file fi } fi if `top -b -n 1 | grep rtorrent` then /opt/etc/init.d/S99rtorrent stop && /opt/etc/init.d/S99rtorrent start else /opt/etc/init.d/S99rtorrent start fi if `top -b -n 1 | grep smbd` then /opt/etc/init.d/S08samba restart else /opt/etc/init.d/S08samba start fi
Фактически - мой первый скрипт, объясните, пожалуйста, что не так делаю?
Заранее спасибо за помощь!
Last edited by BDMN; 04-02-2010 at 21:01.
и вообще эти проверки не нужны --- сделайте всегда restartCode:if [ -n "`/bin/ps | grep rtorrent | grep -v grep`" ] ; then
Last edited by al37919; 05-02-2010 at 08:20.
Я бы вообще переписал ваш скрипт так:
пара примечаний:Code:#!/bin/sh # проверим, тот ли подключён хард if [ ! -d /tmp/mnt/disc0_1/opt/ ]; then /usr/bin/logger -t post-mount "/opt on external storage unavailable, exiting"; exit 0; fi # проверим, не смонтирован ли уже /opt if [ $(/bin/grep -c /opt /proc/mounts) -lt 1 ]; then /bin/mount -obind,noatime,nodiratime /tmp/mnt/disc0_1/opt/ /opt \ && /usr/bin/logger -t post-mount "Mounted /opt"; fi # если /opt смонтирован успешно, можно подключить своп if [ -w /opt ]; then if [ ! -s /opt/swap.file ]; then /bin/dd if=/dev/zero of=/opt/swap.file bs=1M count=70 fi if [ $(/bin/grep -c "/opt/swap.file" /proc/swaps) -lt 1 ]; then /bin/mkswap /opt/swap.file && swapon /opt/swap.file && \ /usr/bin/logger -t post-mount "Enabled swap in /opt/swap.file" fi fi # если присутствует скрипт rc.unslung, стартуем if [ -x /opt/etc/init.d/rc.unslung ]; then /opt/etc/init.d/rc.unslung start /usr/bin/logger -t post-mount "Started rc.unslung" fi
1) своп в файле -- плохая идея. выделите под него отдельный раздел -- доступ будет быстрее + монтироваться он будет из fstab
2) скрипт rc.unslung предназначен для запуска всего, что он найдёт в /opt/etc/init.d/
wl500gP 128MB + 8GB flash 1.9.2.7-rtn-r5438
dmig
Спасибо за настолько развёрнутую помощь, очень благодарен, много нового узнал, ещё больше полюбил роутер))
Один вопрос - куда logger пишет?
ASUS RT-N16 1.9.2.7-rtn, Zotac ZBOX (rtorrent@Ubuntu 13.10)