Hogy a Squid daemonként indúljon!

Fórumok

Üdv!

Már keresgéltem, és jópár manualt is megnéztem. De nem találtam a megoldást. Vagy csak nem voltam elég kitartó!
A helyzet a következő: Debian Sarge rendszerre forrásból telepítettem fel a squid-et. És szeretnék az /etc/init.d -be egy indító scriptet létrehozni, hogy a squid daemonként induljon. Ez süsü alatt nem volt gond, csak átirtam az ATD-t (ATD_BIN="/usr/local/squid/sbin/squid -D"), és elmentettem squid néven. Itt viszont nem boldogulok az atd-vel. Feltehettem volna apt-get-el is, de így legalább tudom mi hol van!

Esetleg valaki tud segíteni?

Hozzászólások

/etc/init.d/skeleton a kiindulasi pont.
Amugy szerintem jobban jarsz a debian csomaggal, mint a sajat forditasuval, legalabbis ha egy init script gondot okoz, akkor sokkal tobb gondod lehet a sajat forditasu squid-del kesobb...

skeleton megvan! Akkor debi-ben nem atd-t kell babrálni, rendben!

Egyébként eddig süsü-t használtunk suliban is, és ott nem volt gond a forrásból telepített squid bekonfigurálásával! Most nem is a squid használatával van gondom, hanem szegényt debi alatt init scriptel való elindításával.

Esetleg egy példával fel tudnád vázolni hogy mit kell átirosgálni?

én is a csomagból telepítést javaslom, kivéve persze ha valami konkrétan hiányzik neked belőle (azért ezen meglepődnék)

a debian -D -sYC kapcsolókkal indítja amúgy

az induljon pedig rövid u :)

én is teljesen értelmetlennek látom a dolgot, mi az, h így legalább tudod, h mi hol van?

a csomagból is teljesen egyértelmüen kideríthető és mellesleg egyébként is nagyon jól struktúráltan van minden elosztva...

amúgy itt van:


#! /bin/sh
#
# squid         Startup script for the SQUID HTTP proxy-cache.
#
# Version:      @(#)squid.rc  2.20  01-Oct-2001  miquels@cistron.nl
#

NAME=squid
DAEMON=/usr/sbin/squid
LIB=/usr/lib/squid
PIDFILE=/var/run/$NAME.pid
SQUID_ARGS="-D -sYC"

[ ! -f /etc/default/squid ] || . /etc/default/squid

PATH=/bin:/usr/bin:/sbin:/usr/sbin

[ -x $DAEMON ] || exit 0

grepconf () {
        w="     " # space tab
        sq=/etc/squid/squid.conf
        # sed is cool.
        res=`sed -ne '
                s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
                t end;
                d;
                :end q' < $sq`
        [ -n "$res" ] || res=$2
        echo "$res"
}

grepconf2 () {
        w="     " # space tab
        sq=/etc/squid/$NAME.conf
        # sed is cool.
        res=`sed -ne '
                s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
                t end;
                d;
                :end q' < $sq`
        [ -n "$res" ] || res=$2
        echo "$res"
}

#
#       Try to increase the # of filedescriptors we can open.
#
maxfds () {
        [ -n "$SQUID_MAXFD" ] || return
        [ -f /proc/sys/fs/file-max ] || return 0
        [ $SQUID_MAXFD -le 4096 ] || SQUID_MAXFD=4096
        global_file_max=`cat /proc/sys/fs/file-max`
        minimal_file_max=$(($SQUID_MAXFD + 4096))
        if [ "$global_file_max" -lt $minimal_file_max ]
        then
                echo $minimal_file_max > /proc/sys/fs/file-max
        fi
        ulimit -n $SQUID_MAXFD
}

fixperms () {
        dir=$1
        usr=$2
        grp=$3

        currusr=`/usr/bin/stat -c '%U' $dir`
        currgrp=`/usr/bin/stat -c '%G' $dir`

        if [ $currusr != $usr ]
        then
                chown $usr $dir -R
        fi

        if [ $currgrp != $grp ]
        then
                chgrp $grp $dir -R
        fi

}

start () {
        cdr=`grepconf2 cache_dir /var/spool/$NAME`
    usr=`grepconf cache_effective_user proxy`
        grp=`grepconf cache_effective_group proxy`

        case "$cdr" in
                [0-9]*)
                        echo "squid: squid.conf contains 2.2.5 syntax - not starting!" >&2
                        exit 1
                        ;;
        esac

        #
    # Create spool dirs if they don't exist.
    #
        if [ -d "$cdr" -a ! -d "$cdr/00" ]
        then
                echo "Creating squid spool directory structure"
                /usr/sbin/squid -z
        fi

        if [ "$CHUID" = "" ]; then
                CHUID=root
        fi

        maxfds
        umask 027
        cd $cdr
        start-stop-daemon --quiet --start \
                --pidfile $PIDFILE \
                --chuid $CHUID \
                --exec $DAEMON -- $SQUID_ARGS < /dev/null
        sleep 1
}

stop () {
        PID=`cat $PIDFILE 2>/dev/null`
        start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
        #
        #       Now we have to wait until squid has _really_ stopped.
        #
        sleep 2
        if test -n "$PID" && kill -0 $PID 2>/dev/null
        then
                echo -n "(waiting..."
                cnt=0
                while kill -0 $PID 2>/dev/null
                do
                        cnt=`expr $cnt + 1`
                        if [ $cnt -gt 60 ]
                        then
                                #
                                #       Waited 120 seconds now. Fail.
                                #
                                echo -n "failed)"
                                if [ "$1" = verbose ] ; then
                                        echo "."
                                else
                                        echo -n " "
                                fi
                                return
                        fi
                        sleep 2
                        echo -n "."
                done
                echo -n "done)"
                if [ "$1" = verbose ] ; then
                        echo " $NAME."
                else
                        echo -n " "
                fi
        else
                [ "$1" = verbose ] && echo "$NAME."
        fi
}

case "$1" in
    start)
        echo -n "Starting proxy server: "
        start
        echo "$NAME."
        ;;
    stop)
        echo -n "Stopping proxy server: "
        stop verbose
        ;;
    reload|force-reload)
        echo -n "Reloading $NAME configuration files..."
        start-stop-daemon --stop --signal 1 \
                --pidfile $PIDFILE --quiet --exec $DAEMON
        echo "done."
        ;;
    restart)
        echo -n "Restarting proxy server: "
        stop
        start
        echo "$NAME."
        ;;
    *)
        echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart}"
        exit 3
        ;;
esac

exit 0

szerk:
ezt mondjuk úgy is kinyerheted ha már annyira saját magad szeretnéd, h apt-vel csak letölteted a csomagot, aztán a /var/cache/apt/archives alatt fogod, pl mc -vel belemész és kimásolod....

Menetközben én is rájöttem a trükkre. Köszi!
Érdemesebb lesz apt-get el.
Sajna ez nevelési probléma. Forrásra szokatot minket a tanár!:)
De suse alatt tényleg könnyebb volt mindent megtalálni ha forrásból pakoltunk! és ugyanúgy működött mintha csomagból tettük volna fel.
Ez van! Azért thx:)

Nem igazán hagyott nyugodni a probléma.:P

És itt egy nagyon egyszerű megoldás:

Csinálunk egy fájlt az /etc/init.d/-be az alábbi tartalommal:

#! /bin/sh

/usr/local/squid/sbin/squid -D -sYC -f /etc/squid/squid.conf

Ezt elmentjük S"szám""valami" néven. Itt a szám egy szabad sorszámot jelöl az rc2.d-től rc5.d -ig. Meg kell nézegetni. Utána bármilyen nevet beírhatunk. Jelen esetben legyen squid. Nálam ez így néz ki: S22squid. Erre kiadunk egy chmod +x S22squid parancsot. Ha ezekkel megvagyunk, akkor a fentebb említett helyek mindegyikébe (rc2.d,rc3.d,rc4.d,rc5.d) csinálunk egy szimlinket:

ln -s /etc/init.d/S22squid S22squid

Ha ez készen van, akkor egy reboot, és a squid is indulni fog automatikusan. ps ax | grep squid paranccsal ellenőrizhetjük.

Nekem működik!

Hat, remelem, ez alapjan senki sem fog init scriptet irni. Pl. hol a stop, start, esetleg reload, restart??? Nem veletlenul irtam a skeleton-t, abbol lenne meg mit tanulnod. A szam nem kell hogy egyedi legyen, a lenyeg, hogy pl. a halozat mar fel legyen huzva es esetedben az /usr/local mar mount-olva legyen az inditaskor, leallitaskor (mert az sem art, Kxx minimum a 0,1,6 runlevel-hez) ertelemszeruen forditva. Debian alatt pl. az update-rc.d a celszerszam, a reboot szuksegessege meg egy akkora marhasag, hogy inkabb gyorsan felejtsd is el...

Nem tudom. Ez meg a Woody-stable idejebol szarmazo squid volt. Mindenfajta azonositas hianyzott belole.
Nem a fuggoseg miatt nem kerult bele, hanem passz.

UPDATE: Van a woody-feleben is, ahoyg elnezem. Akkor viszont meg regebbi Debian volt.
Azt tudom, hogy 2.2-es kernel volt benne, mikor atvettem az uzemeltetest. Hat, akkor
egyszerubb lett volna frissiteni a csomagokat, mint ujat forditani...De mar regen volt,
keso banat :)

Ha deb csomagból pakolod fel, akkor is tudhatod, mi hol van: az mc nagyon szépen bele tud lépni a deb csomagba, és megmutatja, mit tartalmaz.

Miért forrásból tetted fel a squid-et? Ezt nem értem.
apt-cache search squid

A forrásból felvakart cuccról te tudod, hogy fent van, meg hogy hogyan lett fordítva, etc. Az utánad következő/tartalék/másik rendszergazda meg nem. Ha meg frissíteni kell, hogy szeded le a régi verziót? Persze, azt mondod, hogy az új verzió felülvágja a régit. Na ja. Azokat a fájlokat, ami létezik a régiben is, meg az újban is... Ha mindenképp src-ből akarsz dolgozni (bár production szerveren nem illik C-fordítónak leledzenie, de ez más kérdés...), akkor forrás tgz, Deb-es diff, meg .dsc, aztán build-elj saját csomagot, és azt rakd fel a csomagkezelővel.

És lehet sok szép szívást megélni... Gentoo rulz. Én már hetek óta próbálok a howto-k alapján egy egyszerű scriptcsomagot összerakni, no dependency, de nagyon nem mén.

Az apt-get install gcc semmi perc alatt lefut. Általába on-demand rakom fel, csak aarra kell ügyelni, hogy a /var/cache/apt/archives-be ott figyeljen a megfelelő csomi.

Hmm... nem tudom ki hogy van vele, de én egy élő szerveren nem szívesen frissítek bármi produktívat orrba-szájba... Csak ha nagyon muszáj.

Amúgy ha forrásból nyomok vmit, én előbb mindig virtuális root-ra nyomok make install-t (make DESTDIR=/root/testroot install), és innen 1 perc és megvan a fájllista is.

Amúgy a csomag így is-úgy is akkor frissül amikor nekem eszembe jut frissíteni... szal túl nagy difi nincs.

"Amúgy a csomag így is-úgy is akkor frissül amikor nekem eszembe jut frissíteni... szal túl nagy difi nincs."

de legalább van rá értelmes progi ami figyeli /pl. apticron/, h van e frissíteni való és mondjuk előre letölti a csomagokat, h neked már csak apt-get upgrade -el a letöltött cuccokat kelljen frissíteni + akár e-mail -en figyelmeztet...

Nah hát igy visszaolvasva is elég idegesítő! Szánalmas, ahogy egyesek arra nem képesek hogy segítsenek másoknak, akinek nem inge ne vegye magára! Arról sajnos nem tehetek, hogy nektek az apt-get olyan mint a csecsemőnek az anyatej!:D Egyéni problem! Különösebben nem érdekel! Nah további szép napot így utólag is! Aztán bátrabban a forrásal!:)

Fogj egy squid deb csomagot, másold ki belőle az indítósccriptet, oszt jó'ccakát. Elején beállítgatod a változókat, ami kell, utána egy case-zel start/stop/restart/egyéb(help) lekezelését megcsinálod, az egyes ágakban a megfelelő (squid indítása, leállítása, konfiguráció-újraolvasása) parancsokat bevésed, az ág végén a ;;-t nem felejted el, aztán teszteled.