Gibt es eine funktion, womit man alle prozesse "killen" kann( wenn möglich mit,ausmahmen für wichtige prozesse)?
Danke schonmal:)
"prozess-killer"
-
deets
warst du nicht der typ der schon beim letzten mal nix dazu gesagt hat, welches betriebssystem er benutzt?
und darueber hinaus: wie definierst du denn wichtige prozesse? mir ist mein last.fm-prozess zB wichtig...
und darueber hinaus: wie definierst du denn wichtige prozesse? mir ist mein last.fm-prozess zB wichtig...
-
problembär
Tatsächlich hab' ich mal ein bash-Skript geschrieben, das alle Prozesse eines normalen Benutzers bis auf die Shell killt.
Man muß dazu wie gesagt normaler Benutzer sein, und man muß auf der Linux-Textkonsole sein (z.B. indem man über STRG+ALT+Backspace solange den X-Server killt, bis man zur Textkonsole kommt). Danach kann man dann - auf eigene Gefahr - das Skript "killit" ausführen:
Es hatte etwas gedauert, das mit der geschweiften Klammer herauszufinden. Ohne das gab's immer Probleme mit Subshells.
Keine Ahnung, ob der OP sowas gemeint hatte.
Man muß dazu wie gesagt normaler Benutzer sein, und man muß auf der Linux-Textkonsole sein (z.B. indem man über STRG+ALT+Backspace solange den X-Server killt, bis man zur Textkonsole kommt). Danach kann man dann - auf eigene Gefahr - das Skript "killit" ausführen:
Code: Alles auswählen
#!/bin/bash
# killit
if [ "$UID" -eq 0 ]
then
echo -e "\nThis script may not be run as \"root\". Aborting.\n"
exit 1
fi
if [ -n "$(ps x | grep startx)" ] && [ -n "$(echo $a | grep 'grep startx')" ]
then
echo -e "\nPlease kill the X-server first (pressing \"Ctrl+Alt+Backspace\").\nNothing done.\n"
exit 2
fi
a=$(ps x)
n=0
x=0
echo "$a" |
{
while read i
do
if test -z "$(echo $i | grep bash)" -a -z "$(echo $i | grep 'ps x')" -a -z "$(echo $i | grep COMMAND)"
then
if test $x -eq 0
then
echo
echo "Killing:"
echo
x=1
fi
knr="$(echo $i | awk -F " " '{print $1}')"
kill -9 $knr
b=$(ps -p $knr -o comm=)
echo -e "$knr\t$b"
let "n += 1"
fi
done
echo
if test $n -eq 0
then
echo "No process to kill."
fi
if test $n -eq 1
then
echo "One process killed."
fi
if test $n -gt 1
then
echo "$n processes killed."
fi
echo
}
# ps xKeine Ahnung, ob der OP sowas gemeint hatte.
Zuletzt geändert von problembär am Dienstag 15. Mai 2012, 18:22, insgesamt 1-mal geändert.
Grund: Quelltext in Bash-Code-Tags gesetzt.
Grund: Quelltext in Bash-Code-Tags gesetzt.
-
deets
Ja, aber welches *Kriterium* benutzt du dafuer? EIne Positivliste? Woher weisst du denn, was fuer Prozesse sinnvoll sind oder nicht? Villeicht hat der Besitzer ne neue GraKa installiert, und die hat ein Programm das im Systray lauert. Killst du das dann auch?dark-lion hat geschrieben:1. nicht, dass ich wüsste.falls doch:windows
2.Unter wichtigen programm verstehe ich zb. Audiog,explorer und leerlaufprozess. Eben welche von windows
Anders gesagt: ich wuerde mich schoen bedanken, wenn mir ein Progamm andere Programme unter Hintern wegschiesst...
Erzaehl uns doch mal lieber, was du vorhast.
Ich hab meine Frage mal in den Code reinkommentiert, ich hoffe, sie ist ersichtlich.problembär hat geschrieben:Code: Alles auswählen
... if [ -n "$(ps x | grep startx)" ] && [ -n "$(echo $a | grep 'grep startx')" ] # HIER GIBT ES $a DOCH NOCH GAR NICHT, ODER? then echo -e "\nPlease kill the X-server first (pressing \"Ctrl+Alt+Backspace\").\nNothing done.\n" exit 2 fi a=$(ps x) ...
Man könnte ja eine ganz simple Definition nehmen: Unwichtige Prozesse sind alle Prozesse die ich mit meinen Userrechten abschießen darf.deets hat geschrieben:Ja, aber welches *Kriterium* benutzt du dafuer? EIne Positivliste? Woher weisst du denn, was fuer Prozesse sinnvoll sind oder nicht?
Vielleicht habt ihr schonmal von der app advanced taskkiller für android gehört.deets hat geschrieben:dark-lion hat geschrieben:1. nicht, dass ich wüsste.falls doch:windows
2.Unter wichtigen programm verstehe ich zb. Audiog,explorer und leerlaufprozess. Eben welche von windows
Anders gesagt: ich wuerde mich schoen bedanken, wenn mir ein Progamm andere Programme unter Hintern wegschiesst...
Erzaehl uns doch mal lieber, was du vorhast.
So etwas will ich für pc machen
Ich denke es wird dir wesentlich mehr bringen nicht benötigte Dienste zu deaktivieren, von Zeit zu Zeit nachzuschauen ob es Speicherlecks gibt und den betreffenden Programmen einen Neustart zu gönnen.
Oder wenn du einen sehr leistungsschwachen Rechner hast mal überlegen Windows herunterzuwerfen.
Oder wenn du einen sehr leistungsschwachen Rechner hast mal überlegen Windows herunterzuwerfen.
-
Leonidas
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also bei den meisten Systemen niemals weil DontZap aktiv ist und bei den restlichen startet man den X-Server ständig neu? Das geht doch mit Strg+Alt+F1 deutlich einfacher in ne Textkonsole zu kommen und funktioniert sogar überall.problembär hat geschrieben:(z.B. indem man über STRG+ALT+Backspace solange den X-Server killt, bis man zur Textkonsole kommt).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
problembär
Da hast Du recht. Ist mir noch nicht aufgefallen, obwohl ich das Skript jahrelang eingesetzt hab'. Wahrscheinlich weil ich den Fall, daß der X-Server noch läuft, praktisch nur sehr selten reproduziert hab'.Liffi hat geschrieben:problembär hat geschrieben:Code: Alles auswählen
if [ -n "$(ps x | grep startx)" ] && [ -n "$(echo $a | grep 'grep startx')" ] # HIER GIBT ES $a DOCH NOCH GAR NICHT, ODER?
Wenn man ein Skript herausgibt, sollte man aber auch das Abfangen der Fehler testen. Das ist also ein Bug, der noch zu beseitigen wäre.
@Leonidas: Über Strg+Alt+F1 ist mir's auch recht. So ein Skript sollte eigentlich sowieso überhaupt nicht nötig sein. War's bei mir aber (auf SuSE 10.0), weil KDE usw. immer noch Prozesse laufen hatte, die offensichtlich gar nicht mehr gebraucht wurden. Was ebenfalls nicht die feine Art ist.
Jetzt, auf SuSE 12.1ergibt
Code: Alles auswählen
ps xa | grep udevUnd wenn man sich über solche Sachen mal wieder richtig geärgert hat, kann ein kraftvolles "Strg+Alt+Backspace", gefolgt von "killit" auch befreiend wirken.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich denke solche Hacks führen eher zu Problemen bzw. sind deren Ursache...problembär hat geschrieben:Irgendwo gibt es auf einem Linux-System anscheinend immer was zu tun. Da muß man sich dann halt mit solchen Hacks behelfen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Wenn einen drei udev-Dämonen stören, könnte man eventuell mal überlegen was anderes als SuSe zu nutzen. Wie zum Beispiel Arch, dass sich ja für seinen Minimalismus rühmt 
edit: Davon abgesehen, wie wäre es die Ursache statt der Symptome zu bekämpfen wenn es tatsächlich zu voller Auslastung führen sollte? Dass die automatische Hardware-Erkennung verrückt spielt, wird ja höchstwahrscheinlich damit zu tun haben, dass irgendwas von deiner Hardware es dazu veranlässt und sei es ein fehlendes Firmware-Update fürs DVD-Laufwerk.
edit: Davon abgesehen, wie wäre es die Ursache statt der Symptome zu bekämpfen wenn es tatsächlich zu voller Auslastung führen sollte? Dass die automatische Hardware-Erkennung verrückt spielt, wird ja höchstwahrscheinlich damit zu tun haben, dass irgendwas von deiner Hardware es dazu veranlässt und sei es ein fehlendes Firmware-Update fürs DVD-Laufwerk.
Zuletzt geändert von webspider am Mittwoch 16. Mai 2012, 16:56, insgesamt 2-mal geändert.
-
BlackJack
@problembär: So ein Skript sollte in der Tat nicht nötig sein, und ist es normalerweise auch nicht. Auch bei Dir wahrscheinlich nicht, aber Du machst ja so gerne Sachen von denen Du keine Ahnung hast. Woher willst Du denn wissen welche Prozesse benötigt werden und welche nicht? KDE hat einiges an Hintergrundprozessen die irgendwelche Arbeiten erledigen und es hat immer ein paar Prozesse am laufen an denen die Bibliotheken „hängen”, damit Programme schneller starten können. Das sind Features und keine Bugs.
Auch bei `udevd` ist es völlig normal, dass mehrere Worker-Prozesse laufen. Das sind in der Regel Kindprozesse von dem `udevd`, der beim Systemstart gestartet wird. So sieht das zum Beispiel bei mir gerade aus:
Wieso denkst Du da stimmt was nicht?
Auch bei `udevd` ist es völlig normal, dass mehrere Worker-Prozesse laufen. Das sind in der Regel Kindprozesse von dem `udevd`, der beim Systemstart gestartet wird. So sieht das zum Beispiel bei mir gerade aus:
Code: Alles auswählen
396 ? S<s 0:00 udevd --daemon
17924 ? S< 0:00 \_ udevd --daemon
17925 ? S< 0:00 \_ udevd --daemonDas meinte ich auch weniger, sondern dass eine minimalere Distribution, bei der man mehr damit beschäftigt ist Dienste und Software hinzuzufügen anstatt vorhandene zu entfernen, vielleicht eher was für den Problembären wäre.
