Mes sessions SSH semblent être en train de tomber, bien que ce ne soit pas mon problème majeur. Le problème majeur est que mes précédentes sessions sont toujours vivantes. Pire, l'une d'entre elles est en cours d'exécution, visudo
m'empêchant d'y accéder!
who
montre un certain nombre de sessions, à l'exception de la session actuelle dont je sais qu'elles sont déconnectées, comment puis-je mettre fin aux anciennes pour que leurs ressources soient libérées?
fuser -k /dev/pts/0
ou quel que soit le type de terminal qui apparaît dans lawho
sortie. Un peu bizarre tous ceux qui ont ignoré SIGHUP, cependant. Ont-ils couru dans unescreen
session ou quelque chose?who
), merci!Réponses:
Pour résoudre le problème immédiat, à savoir que le fichier sudoers est verrouillé, vous pouvez simplement supprimer le fichier verrouillé. Il s’agit généralement de «/etc/sudoers.tmp»; consultez la page de manuel relative à visudo. Si vous supprimez le fichier de verrouillage, vous pouvez exécuter à nouveau visudo.
Pour supprimer toutes les sessions encore en suspens, commencez par connaître le pid de votre propre session en cours. Ensuite, si votre propre pid est 12345, faites
Vous voudrez peut-être le faire sans le
| sh
premier final simplement pour vérifier les PID que vous prévoyez tuer.Si vous êtes sous Linux, vous pouvez plutôt utiliser
pour tuer votre session SSH la plus ancienne. Continuez ainsi jusqu'à ce que votre session en cours soit la seule disponible.
Vous pouvez également définir
ServerAliveInterval 15
votre.ssh/config
envoyer un message keepalive toutes les 15 secondes lorsque aucune donnée n'a été transmise.man ssh_config
pour plus d'informations.la source
grep -v 12345
partie de la syntaxe? passer tout ce qui ne contient pas12345
?grep -v 12345
signifie "supprimer toute correspondance12345
de la correspondance". Par conséquent, vous devez d'abord identifier le PID de votre propre session et utiliser ce PID à la place de12345
.who
outop
affiche toujours l'ancien nombre d'utilisateurs signés, même si cela devrait en montrer seulement un. Comment peut-on forcer l'actualisation?Si vous
ps -f
listez les processus de manière à voir leurs commandes et leurs arguments (comme par exemple chez procps), vous devriez voir les processus sshd appelés par exemple:Le terminal (
pts/7
) est la partie clé ici - si vous le comparez avec votre terminal actuel (tty
), vous pouvez voir quelle est votre session active. Il existe bien sûr d'autres moyens de le faire (par exemple, regarder le PID du shell en cours d'exécution et le localiser dans l'arbre des processus), mais c'est probablement le plus simple. Vous pouvez ensuite utiliser quelque chose dans ce sens:Vous pouvez ensuite alimenter les PID avec lesquels tuer,
xargs
mais assurez-vous toujours de ne pas tuer lesshd
processus principal qui gère les nouvelles connexions .Sur une note connexe, sachez qu’en règle générale, l’analyse de la
ps
sortie est source d’erreurs (en particulier sur différents systèmes) en raison de la variabilité de ses formats de sortie (atténuée dans une large mesure par l’utilisation de-o pid= -o command=
).la source
Cela supprimera les sessions pendant plus de 2 jours. Il pourrait être mis comme un cron.
Cela tuera tout sauf votre (dernière session active). Exécutez ceci depuis le terminal.
la source