Re: Turning off services SOLVED
On Sat, 6 Jan 2001 13:49:46 -0800, Ross Boylan said:
> At various times I have wanted to turn off certain daemons without
> uninstalling their packages. I couldn't find any good way to do this,
> so I wrote a little script. I'm making it available under the GPL.
>
> I've since discovered that the some packages also create a bunch of
> crontab jobs, and they are still cluttering things up a bit.
>
> If there's a better way to do this, I'd love to hear it.
Try finding the line in the file /etc/inet.conf and comment it out for the
services that you don't want to run. You may have to reboot then, or try
restarting the internet superserver - try a "/etc/init.d/inetd restart". You
might have to kill a few other processes or just stop them using their scripts
in /etc/init.d/.
Hope this helps
>
> #! /usr/bin/python
> # switchDemon.py
> #
> # Usage: switchDemon.py (--on | --off) <list of demon names>
> #
> # This script will scan, turn off, or turn on selected
> # demons in /etc/rc?.d/. It does so by renaming S* symbolic
> # links so the services won't start.
> # Scan mode (neither --on nor --off) simply reports the status
> # of the demons.
> # Note that demons are not actually started or stopped by this script;
> # it just controls what will happen at system startup.
> #
> # (c) 2001 Ross Boylan RossBoylan@stanfordalumni.org
> # Made available under the GPL (see www.gnu.org)
>
> import glob, os.path, re, sys
>
> class Demon:
> "Information and actions on a demon"
>
> gDisabled = "Disabled-"
>
> def __init__(self, name):
> "Name of demon"
> if not os.path.exists("/etc/init.d/"+name):
> raise name + " is not a known demon"
> self._name = name
> self._statuses = []
>
> def checkStatus(self):
> "Check status at various run levels"
> self.doOverRunLevels(self._checkStatus)
>
> def turnOff(self):
> "Make it so won't run at next system start"
> self.doOverRunLevels(self._turnOff)
> self.checkStatus()
>
> def turnOn(self):
> "We will start on next run level change"
> self.doOverRunLevels(self._turnOn)
> self.checkStatus()
>
> def doOverRunLevels(self, method):
> "Invoke method over all run levels"
> for rl in glob.glob("/etc/rc[0-9Ss].d"):
> method(rl, rl[-3])
>
> def _checkStatus(self, directory, runLevel):
> "See if we are around and fill in _statuses if we are"
> aRegex = re.compile("("+Demon.gDisabled+r")?S(\d\d)"+self._name);
> for file in os.listdir(directory):
> aMatch = aRegex.search(file)
> if aMatch:
> aStatus = DemonStatus(runLevel, aMatch.group(2), not aMatch.group(1))
> self._statuses.append(aStatus)
> return
>
> def _turnOff(self, directory, runLevel):
> "Disable demon for future reboots"
> aRegex = re.compile(r"S(\d\d)"+self._name)
> for file in os.listdir(directory):
> aMatch = aRegex.match(file) # must be at start
> if aMatch:
> os.rename(os.path.join(directory, file),
> os.path.join(directory, Demon.gDisabled+file))
> # no return values documented for os.rename
> return
>
> def _turnOn(self, directory, runLevel):
> "Enable demon for future reboots"
> aRegex = re.compile(Demon.gDisabled+r"S(\d\d)"+self._name)
> for file in os.listdir(directory):
> aMatch = aRegex.match(file) # must be at start
> if aMatch:
> os.rename(os.path.join(directory, file),
> os.path.join(directory, file[len(Demon.gDisabled):]))
> # no return values documented for os.rename
> return
>
> def reportTo(self, file):
> "Send human readable report to stream"
> file.write("Demon %s:\n"%self._name)
> for aStatus in self._statuses:
> file.write("\t%s\n"%str(aStatus))
>
>
> class DemonStatus:
> "Status of a given demon"
>
> def __init__(self, runlevel, priority, enabled=1):
> "Priority (nn) of demon and whether it is enabled"
> # runlevel is a single 0, 1, ...
> self._runlevel = runlevel
> self._priority = priority
> self._enabled = enabled
>
> def __str__(self):
> if self._enabled:
> msg = "Enabled"
> else:
> msg = "Turned off"
> return "%s for run level %s (priority %s)"%(msg, self._runlevel, self._priority)
>
> def isEnabled(self):
> if self._enabled:
> return "on"
> else:
> return "off"
>
>
> aCommand = sys.argv[1]
> if aCommand[0] == "-":
> if aCommand[-1] == "f":
> anAction = "turnOff"
> elif aCommand[-1] == "n":
> anAction = "turnOn"
> else:
> print "Command not understood"
> names = sys.argv[2:]
> else:
> anAction = "checkStatus"
> names = sys.argv[1:]
>
> for aDemonName in names:
> aDemon = Demon(aDemonName)
> Demon.__dict__[anAction](aDemon)
> aDemon.reportTo(sys.stdout)
>
>
>
> --
> To UNSUBSCRIBE, email to debian-user-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>
>
>
--
Using intelligent power:
RISC OS, Be OS, Debian Linux
Enjoying computing.
Reply to: