Pour célébrer ma période de probation de 3 mois en tant que développeur web concluant, je vais faire un gâteau terminal pour le bureau. Dans mes recherches sur le sujet, je suis tombé sur cette photo, et je me demandais ce que les commandes font?Que font les commandes de ce gâteau?
Répondre
Ce pipeline essaye d'arrêter tous les processus d'Apache sur le système, dans un assez lourd la mode Rube Goldbergian.
Le pipeline:
Obtient une liste de tous les processus du système. (
ps axww
)Cette méthode est un dépassement, fournissant plus de données que nécessaire pour atteindre l'extrémité souhaitée, ce qui causera des problèmes plus tard.
Recherche les lignes contenant
httpd
, qui est un nom de processus commun pour le serveur Web Apache. Il pourrait correspondre à d'autres choses accidentellement, mais sur une machine qui est supposée être simplement un serveur web, c'est assez sûr.Vous obtenez des lignes comme celle-ci de ce stade:
17652 ? Ss 0:00 /usr/bin/httpd -blah -args
Le pipeline correspondrait à une commande
vi /etc/httpd/conf.d/mime.conf
aussi.Filtre les lignes contenant
grep
(grep -v grep
) parce que le premiergrep
trouveront également se:24180 pts/0 R+ 0:00 grep httpd
Si vous ne filtrent pas cette ligne, vous risquez de tuer le premier
grep
par exemple avant la fin du pipeline, brisant ainsi le pipeline.ps
sous Linux trie sa sortie par PID par défaut, de sorte que PIDs wrap around,grep
peut apparaître avanthttpd
, ce qui fait que la commande cake n'a aucun effet.Utilise
xargs
pour exécuterkill -9
sur chaque ligne trouvée.C'est, il construit des commandes comme celle-ci et les exécute:
kill -9 17652 ? Ss 0:00 /usr/bin/httpd -blah -args
Cela peut ou ne peut pas faire ce que vous voulez. Il peut parfois fonctionner car l'ID de processus (PID) est la première chose sur la ligne lorsque vous exécutez
ps
avec les indicateursaxww
. (Il y a d'autres façons d'exécuterps
où la première chose sur la ligne est quelque chose d'autre.Le décorateur de gâteaux espère que l'implémentation dekill
sur le système ne barfera pas quand il obtiendra tous les autres indésirables suivant le PID sur la ligne de sortie . Ce que faitkill(1)
avec des arguments non-PID. Il pourrait s'arrêter au premier argument non numérique, il pourrait donner des erreurs pour chaque argument trouvé, ou il pourrait les ignorer silencieusement. Si la ligne trouvée parps
contient des nombres qui sont des PID valides, la commande sur le gâteau pourrait finir par tuer des processus que vous n'aviez pas prévus.
Il serait beaucoup mieux d'utiliser pgrep
ici, si elle est disponible:
# pgrep httpd | xargs kill -9
Non seulement la commande plus courte, il fait ce que vous voulez réellement, de manière fiable. Il ne correspond pas, puis filtre les processus grep
, il ne correspond que sur le nom du processus, et il ne transmet pas de courrier indésirable non-PID à kill
.
Systems avec pgrep
ont souvent aussi la commande pkill
, qui se termine ce pipeline en une seule commande:
# pkill httpd
Vous pouvez ajouter ici pour mettre fin à la force httpd
processus si vous voulez, mais je vais laisser à partir d'ici. J'ai ordonné à ces commandes d'être de plus en plus discriminantes, donc il est également logique de les rendre de façon moins brutale, si vous voulez.
Si votre système n'a pas pgrep
ou pkill
, il peut avoir pidof
:
# kill $(pidof httpd)
Une autre méthode consiste à utiliser killall
:
# killall httpd
Prenez garde, la commande killall
peut faire something different sur des systèmes d'exploitation non-Linux.
La méthode la plus sûre consiste à utiliser la commande "Arrêter le serveur Web" normale de votre système d'exploitation. Exemples:
# service httpd stop
# /etc/init.d/httpd stop
# systemctl stop httpd.service
# launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
Apache comprend une commande "arrêter Apache bien":
# apachectl stop
Cette commande ne cependant bon, Apache arrêter. Les commandes spécifiques au système d'exploitation ci-dessus peuvent également effectuer d'autres actions de nettoyage. Si Apache a été démarré par le système d'exploitation, vous devez également utiliser la commande du système d'exploitation pour l'arrêter.
Ceci est une commande gâteau de protection. Cette commande empêche un root de manger le gâteau, car après cela les utilisateurs fâchés appellent la racine, ouvrent les tickets de panne, etc. :)
Est-ce que 'incapable' peut être 'activer' ou 'désactiver' ou quelque chose d'autre? –
- 1. Que font les commandes de langage d'assemblage "set_w" et "set_sw"?
- 2. Que font les SIFT?
- 3. Qu'est-ce que $$ et :: font dans Postgresql
- 4. Est-ce que les noms de catégories Objective-C font quoi que ce soit?
- 5. Est-ce que plusieurs signes '#' dans les chaînes de format font quoi que ce soit?
- 6. Est-ce que les boutons de l'inspecteur Clojure (inspecter) font quoi que ce soit?
- 7. Comment trouver ce que font les méthodes ActiveRecord :: Base.connection
- 8. Que font les opérateurs '& =' et '= &'?
- 9. Est-ce que @ font-face fonctionne dans tous les navigateurs?
- 10. Que font les sélecteurs CSS
- 11. Qu'est-ce que ce code CSS signifie (division font-size)?
- 12. Que font les (#!) Dans les URL Twitter?
- 13. Que font les parenthèses et les virgules?
- 14. Que font les différentes portées de WSPBuilder?
- 15. Que font les commandes du moniteur QEMU 'info mem' et 'info mtree'?
- 16. Est-ce que les sous-sélections font que SQlite ignore les distinctions?
- 17. Castle Windsor: Alors, que font les ActAs?
- 18. Que font les annotations? Et comment l'utiliser?
- 19. Que font réellement les fichiers pdb?
- 20. Que font les instructions .forEach ci-dessous?
- 21. Est-ce que les CERs de C# try-finally font une pause dans les itérateurs?
- 22. En Delphi, qu'est-ce que System.TMonitor.Pulse et TMonitor.PulseAll font réellement
- 23. Que font les 3 '/' d'affilée en C#?
- 24. Est-ce que quelqu'un sait ce que font ces propriétés Oracle AQ JMS XA?
- 25. $ ('# <% = txtFirstName.ClientID%>'). Que font $ et # dans ce code?
- 26. Que font les paramètres de type pour les méthodes génériques?
- 27. Comment est-ce que je peux partager une chaîne que les shells font pour remplir ARGV?
- 28. que font ces instructions
- 29. MKAnnotationView ne le font pas quoi que ce soit
- 30. gâteau php captcha problème
Ils sont supposés arrêter tout processus 'httpd' (serveur web) sur la machine. Mais la commande est cassée. : - \ –
Eh bien, les valeurs passées à 'kill -9' incluront plus que de simples identifiants de processus, mais à moins que certains d'entre eux ne soient des PID valides, ils imprimeront juste un tas de messages d'erreur et tueront les processus. (Mais sur mon système, où j'exécute Apache, les processus du serveur web s'appellent 'apache2', pas' httpd'.) –
Merci à tous les deux, ma curiosité a été repoussée! J'ai supposé que cela aurait pu être quelque chose dans ce sens. – okeegan