Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Πρόγραμμα διαχείρισης σε solaris 10

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3278

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
Γεια σας!
Προσπαθώ να δημιουργήσω ένα πρόγραμμα διαχείρισης σε Solaris 10.
Έχω καταφέρει να αρχίζω τα προγράμμα που θέλω με το module subrocess.
Αυτό που θέλω να ρωτήσω είναι πως μπορώ να τις κάνω kill;
Δηλαδή να βρίσκω με ps -ef | grep την process και μετά να την κάνω kill.
Ευχαριστώ εκ των προτέρων!!
ΥΓ: το Solaris 10 έχει Python 2.6.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3279

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 405
  • Ληφθείσες Ευχαριστίες 87
Όχι τόσο κομψό αλλά δουλεύει. Κάνω την παραδοχή ότι η διεργασία που μας ενδιαφέρει είναι η πρώτη.
Δουλεύει με Python 2.7.x.
>>> import subprocess
>>> import os
>>> proc = 'vim'
>>> ps= subprocess.Popen("ps -ax | grep "+proc+"|awk '{print $1}'", shell=True, stdout=subprocess.PIPE)
>>> out = ps.stdout.read()
>>> os.kill(int(out.split('\n')[0]), 11)
>>>

EDIT
Ο κωδικός τερματισμού (SIGTERM) είναι 15 και όχι 11, όπως έχω γράψει παραπάνω.
Γράφω σε Python 3
Τελευταία διόρθωση: 2 Χρόνια 10 Μήνες πριν από kamar.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3280

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 674
  • Ληφθείσες Ευχαριστίες 109
Λογικά το Popen.pid σε καλύπτει: docs.python.org/2.6/library/subprocess.h...subprocess.Popen.pid
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3283

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
Ευχαριστώ για την βοηθεια!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3285

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
Μπορείς να μου εξηγήσεις τι κάνει το παραπάνω; Είμαι καινούριος στην python και δεν το πολυκαταλαβαίνω.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3288

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 405
  • Ληφθείσες Ευχαριστίες 87
jacob_klim έγραψε:
Μπορείς να μου εξηγήσεις τι κάνει το παραπάνω; Είμαι καινούριος στην python και δεν το πολυκαταλαβαίνω.

Για ποια απάντηση θέλεις ανάλυση.
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3289

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
kamar έγραψε:
jacob_klim έγραψε:
Μπορείς να μου εξηγήσεις τι κάνει το παραπάνω; Είμαι καινούριος στην python και δεν το πολυκαταλαβαίνω.

Για ποια απάντηση θέλεις ανάλυση.

Καλησπέρα φίλε! Για τη δικιά σου απάντηση ήθελα βοήθεια αλλά ολα ΟΚ το βρήκα!
Ευχαριστώ για την βοήθεια!
Απλά έχω άλλο θέμα τώρα. Η λύση που πρότεινες δουλεύει αλλά η PID δεν είναι πάντα η πρώτη.
Θα προσπαθήσω να εξηγήσω.
Η process που θέλω να βρίσκω είναι της μορφής ./radar_receive.exe -s 0 -r (int) και κάποια άλλα arguments.
Υπό κανονικές συνθήκες θα υπάρχουν όμοιες processes με μόνη διαφορά το -r το οποίο είναι integer.
Εγώ θέλω να κάνω kill με βάση το -r argument.
Δεν μπορώ να παραθέσω κώδικα γιατί δεν μπορώ να βγω στο internet από το δίκτυο που είμαι στη δουλειά.
Κάποια βοήθεια;;;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3290

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 674
  • Ληφθείσες Ευχαριστίες 109
Το process το ξεκινάς μέσα από python ή μπορεί να τρέχει ήδη;

Αν το ξεκινάς μέσα από την python τότε θα τραβάς το pid χρησιμοποιώντας το link που σου έδωσα στην προηγούμενη απάντηση.

Αν όχι τότε δεν ξέρω να σου προτείνω κάτι αξιόπιστο. Κατά πάσα πιθανότητα όμως θα γίνεται με κάποιο συνδυασμό "ps aux | awk"
Τελευταία διόρθωση: 2 Χρόνια 10 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": jacob_klim

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3291

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
pmav99 έγραψε:
Το process το ξεκινάς μέσα από python ή μπορεί να τρέχει ήδη;

Αν το ξεκινάς μέσα από την python τότε θα τραβάς το pid χρησιμοποιώντας το link που σου έδωσα στην προηγούμενη απάντηση.

Αν όχι τότε δεν ξέρω να σου προτείνω κάτι αξιόπιστο. Κατά πάσα πιθανότητα όμως θα γίνεται με κάποιο συνδυασμό "ps aux | awk"

Ναι από μια άλλη function το ξεκινάω. Απλά το περίεργο είναι ότι στο σπίτι μου στο Ubuntu 14.04 με python 2.7 το καταφέρνω με το pid, στο solaris δεν μπορώ. Κάτι δεν κάνω σωστά μάλλον. Θα το ψάξω περισσότερο.
Ευχαριστώ πολυ!!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3292

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
jacob_klim έγραψε:
pmav99 έγραψε:
Το process το ξεκινάς μέσα από python ή μπορεί να τρέχει ήδη;

Αν το ξεκινάς μέσα από την python τότε θα τραβάς το pid χρησιμοποιώντας το link που σου έδωσα στην προηγούμενη απάντηση.

Αν όχι τότε δεν ξέρω να σου προτείνω κάτι αξιόπιστο. Κατά πάσα πιθανότητα όμως θα γίνεται με κάποιο συνδυασμό "ps aux | awk"

Ναι από μια άλλη function το ξεκινάω. Απλά το περίεργο είναι ότι στο σπίτι μου στο Ubuntu 14.04 με python 2.7 το καταφέρνω με το pid, στο solaris δεν μπορώ. Κάτι δεν κάνω σωστά μάλλον. Θα το ψάξω περισσότερο.
Ευχαριστώ πολυ!!

Διορθώνω το παραπάνω.
Χρησιμοποιώ shell = True και με το pid μου δίνει το PID του shell που ανοίγει.
Αυτό εννοούσα! SOrry!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3293

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 674
  • Ληφθείσες Ευχαριστίες 109
stackoverflow.com/questions/4789837/how-...ched-with-shell-true

Δες αυτό αλλά δεν ξέρω αν οι προτεινόμενες λύσεις είναι posix compiant και αν θα παίζουν σε solaris.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3296

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 405
  • Ληφθείσες Ευχαριστίες 87
jacob_klim έγραψε:
Η process που θέλω να βρίσκω είναι της μορφής ./radar_receive.exe -s 0 -r (int) και κάποια άλλα arguments.
Υπό κανονικές συνθήκες θα υπάρχουν όμοιες processes με μόνη διαφορά το -r το οποίο είναι integer.
Εγώ θέλω να κάνω kill με βάση το -r argument.
Δεν μπορώ να παραθέσω κώδικα γιατί δεν μπορώ να βγω στο internet από το δίκτυο που είμαι στη δουλειά.
Κάποια βοήθεια;;;

Συγγνώμη για την καθυστέρηση. Απ' ότι κατάλαβα, θέλεις να βρεις τον διακόπτη «-r» και τον αριθμό δίπλα του πχ 12 και βάσει αυτού να κάνεις πιο συγκεκριμένη την αναζήτηση και να κάνεις kill τη διεργασία.

Οπότε το μόνο που έχεις να κάνεις είναι ν' αλλάξεις τη μεταβλητή proc, του κώδικα στην προηγούμενη απάντησή μου σε:

proc = './radar.*-r\s*xx'

όπου xx ο αριθμός που θέλεις.

Και μια μικρή επεξήγηση:
Η μεταβλητή proc πρακτικά είναι μια regular expression.
./radar είναι κυριολεκτικό αλφαριθμητικό.
.*: Η τελεία ανάγεται σε οποιοδήποτε χαρακτήρα και το αστεράκι σε μηδέν ή παραπάνω επαναλήψεις του προηγούμενου χαρακτήρα.
-r είναι κυριολεκτικό αλφαριθμητικό.
\s*: Το \s δηλώνει κενό διάστημα και το αστεράκι (όπως παραπάνω) μηδέν ή παραπάνω επαναλήψεις του κενού διαστήματος. Δηλαδή βρίσκει -r 4 ή -r4 ή -r 4
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": jacob_klim

Πρόγραμμα διαχείρισης σε solaris 10 2 Χρόνια 10 Μήνες πριν #3298

  • jacob_klim
  • Το Άβαταρ του/της jacob_klim
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 8
kamar έγραψε:
jacob_klim έγραψε:
Η process που θέλω να βρίσκω είναι της μορφής ./radar_receive.exe -s 0 -r (int) και κάποια άλλα arguments.
Υπό κανονικές συνθήκες θα υπάρχουν όμοιες processes με μόνη διαφορά το -r το οποίο είναι integer.
Εγώ θέλω να κάνω kill με βάση το -r argument.
Δεν μπορώ να παραθέσω κώδικα γιατί δεν μπορώ να βγω στο internet από το δίκτυο που είμαι στη δουλειά.
Κάποια βοήθεια;;;

Συγγνώμη για την καθυστέρηση. Απ' ότι κατάλαβα, θέλεις να βρεις τον διακόπτη «-r» και τον αριθμό δίπλα του πχ 12 και βάσει αυτού να κάνεις πιο συγκεκριμένη την αναζήτηση και να κάνεις kill τη διεργασία.



Οπότε το μόνο που έχεις να κάνεις είναι ν' αλλάξεις τη μεταβλητή proc, του κώδικα στην προηγούμενη απάντησή μου σε:

proc = './radar.*-r\s*xx'

όπου xx ο αριθμός που θέλεις.

Και μια μικρή επεξήγηση:
Η μεταβλητή proc πρακτικά είναι μια regular expression.
./radar είναι κυριολεκτικό αλφαριθμητικό.
.*: Η τελεία ανάγεται σε οποιοδήποτε χαρακτήρα και το αστεράκι σε μηδέν ή παραπάνω επαναλήψεις του προηγούμενου χαρακτήρα.
-r είναι κυριολεκτικό αλφαριθμητικό.
\s*: Το \s δηλώνει κενό διάστημα και το αστεράκι (όπως παραπάνω) μηδέν ή παραπάνω επαναλήψεις του κενού διαστήματος. Δηλαδή βρίσκει -r 4 ή -r4 ή -r 4

Ευχαριστώ πολύ!!
Τελευταία διόρθωση: 2 Χρόνια 10 Μήνες πριν από jacob_klim. Αιτία: Λάθος κείμενο
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.426 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου