8
votes

KillProc et PidofProc sur Linux

J'ai un script qui utilise des commandes KillProc et procofpid et exécute une amende sur un SUSE 64 bits. Mais quand j'ai exécuté le script sur 32bit Redhat, j'ai trouvé que les commandes ci-dessus n'existent pas.

Je n'ai pas de machines de Redhat de 32 bits et de 64 bits pour tester mon script.

Je suppose que c'est juste que sur 64 bits redhat Les commandes ci-dessus devraient être disponibles? Ou sont les commandes ci-dessus spécifiques à SUSE et Redhat?

merci


1 commentaires

Non, mais tuer et pidof sont également portables.


6 Réponses :


0
votes

Je pense que ces commandes sont distribuées des spécificités: je ne les ai jamais vues auparavant. KillProc devrait être une sorte de tuer, mais ce qui est censé procéder à faire?

Dans le titre, vous parlez de PIDOFPROCC, vous pouvez trouver cette commande sous la PIDOF sur la plupart des cases Linux.


0 commentaires

4
votes

Les commandes sont peu susceptibles d'être portable. En fait, c'est la première fois que j'entends parler d'eux - mais je suppose que votre problème est de travailler avec le processus par le nom, pas PID.

vérifier le homme pgrep ou homme pkill - ils sont légèrement plus portables. Ils font partie du package PROCPS (où ps et haut vient de) et doit être disponible sur toutes les variantes Linux. Ils sont également disponibles sur Solaris.


0 commentaires

-1
votes

J'ai eu le même problème que vous, cela a donné l'avertissement:

PIDOF: Options non valides sur la ligne de commande!

J'ai changé le xxx

à xxx


0 commentaires

9
votes

killProc est à RedHat Enterprise Linux 5.4 dans le cadre de /etc/init.d/functions

Si vous en avez besoin, il suffit de faire

. /etc/init.d/functions

Dans votre script pour charger les fonctions de coquille, c'est probablement dans d'autres versions de Redhat, mais c'est le seul que je dois remettre au moment où


0 commentaires

2
votes

Ceux utilisés dans Ubuntu font partie de la spécification " base standard Linux " et sont documentées Il .


0 commentaires

6
votes

Ces commandes sont défini dans le cadre du Base de normes Linux (LSB), comme indiqué par @ Andrekr.

Cependant, sur certains systèmes tels que REDHAT (et probablement SUSE), en fonction des packages installés, ces fonctions peuvent ne pas être définies à l'emplacement spécifié par le LSB, qui est / lib / lsb / init-fonctions code>. Ils sont plutôt définis dans /etc/init.d/functions code>. De plus, dans certaines versions, la variante Redhat de /etc/init.d/functions code> manque la fonction définie par LSB start_daemon code>. Si vous ajoutez l'extrait suivant en haut de votre script, il doit être portable sur la plupart des distributions / installations: P>

if [[ -f /lib/lsb/init-functions ]]; then
  . /lib/lsb/init-functions
elif [[ -f /etc/init.d/functions ]]; then
  . /etc/init.d/functions
  # Pretend to be LSB-compliant
  function start_daemon() {
    daemon $*
  }
else
  echo "Linux LSB init function script or Redhat /etc/init.d/functions is required for this script."
  echo "See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html"
  exit 1
fi


6 commentaires

Votre déclaration redhat (et probablement SUSE) ne les définit pas à l'emplacement spécifié par le LSB est faux. Le méta-package lsb-core-noarch fournit le fichier / lib / lsb / init-fonctions sur les distributions conformes à LSB. Utilisez simplement le gestionnaire de packages de distribution à installer.


@Samveen Merci pour la clarification et les informations sur le package lsb-core-noarch . FWIW, sur Fedora 24, il est Redhat-LSB-CORE . L'extrait de script est toujours utile si vous n'êtes pas sûr de savoir si les environnements d'exécution ont le package installé ou non, et vous n'avez aucune capacité ni désir de forcer son installation.


Veuillez cocher le fournit pour le package redhat-lsb-core : vous remarquerez qu'il fournit une capacité lsb-core- Noarch qui est un méta package , comme je l'ai mentionné dans mon commentaire ( Info RPMFind ).


@Samveen Votre lien vers RPMFind est un site externe qui semble avoir des informations hors de date. Voir ici: apps.fedorAproject.org/packages/redhat-lsb-core/ Vue d'ensemble . redhat-lsb-core est en fait un sous-vue de la méta-package redhat-lsb , et il "fournit" lsb-noarch , ce qui n'est pas " t un paquet mais une capacité.


Je ne vois aucune section sur cette page qui répertorie des informations sur la section fournit: de l'emballage, donc je vais créer un lien vers le fichier de spécification à pkgs.fedorAproject.org/cgit/rpms/redhat-lsb.git/tree/... : Veuillez noter que le fournit: sous % noel de package . Tout en tout, vous manquez mon point: start_daemon est fourni sur Federe (ou toute distribution conforme à LSB), il suffit de ne pas installer la capacité indépendante de la distribution lsb-core-noarch , en utilisant le gestionnaire de packages intégrés de la distribution. par exemple. Yum Installez lsb-core-noarch ou apt-get Installer lsb-core-noarch


@Samveen Non, je ne manque pas de point, j'ai eu ce point de votre premier commentaire.