Trong blog này, trước tiên chúng tôi sẽ liệt kê tất cả các dịch vụ đang chạy. Sau đó, chúng tôi sẽ thực hiện một dịch vụ và chúng tôi sẽ kiểm tra trạng thái của dịch vụ. Sau đó, chúng tôi sẽ dừng dịch vụ và bắt đầu dịch vụ thông qua tập lệnh Python
Ảnh của Hitesh Choudhary trên Bapt
import os
import shlex
Liệt kê tất cả các dịch vụ đang chạyMột bộ lọc phổ biến khác là — type= filter. Chúng tôi có thể yêu cầu systemctl chỉ hiển thị các đơn vị thuộc loại mà chúng tôi quan tâm. Ví dụ: để chỉ xem các đơn vị dịch vụ đang hoạt động, chúng ta có thể sử dụng
hệ điều hành. popen[cmd, mode=’r’, buffering=- 1]
Mở một đường ống đến hoặc từ lệnh cmd. Giá trị trả về là một đối tượng tệp mở được kết nối với đường ống, có thể được đọc hoặc ghi tùy thuộc vào chế độ là 'r' [mặc định] hay 'w'. Đối số đệm có cùng ý nghĩa với đối số tương ứng với hàm open[] tích hợp. Đối tượng tệp được trả về đọc hoặc ghi chuỗi văn bản thay vì byte
Phương thức đóng trả về Không nếu quy trình con đã thoát thành công hoặc mã trả về của quy trình con nếu có lỗi. Trên các hệ thống POSIX, nếu mã trả về là số dương, mã đó biểu thị giá trị trả về của quy trình được dịch trái một byte. Nếu mã trả về là số âm, quá trình đã bị kết thúc bởi tín hiệu được cung cấp bởi giá trị phủ định của mã trả về. [Ví dụ: giá trị trả về có thể là — tín hiệu. SIGKILL nếu quy trình con bị hủy. ] Trên các hệ thống Windows, giá trị trả về chứa mã trả về số nguyên đã ký từ tiến trình con
def listOfRunningServices[]:
try: print["Listing all running service"]
#Check all the running service
for line in os.popen["systemctl --type=service --state=running"]:
services = line.split[]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
pass
Gọi chức năng
listOfRunningServices[]
đầu ra
Chúng ta có thể thấy, rất nhiều dịch vụ đang chạy. Hãy để chúng tôi kiểm tra apache2. trạng thái dịch vụ sử dụng tập lệnh
Xem trạng thái của một dịch vụHãy để chúng tôi sử dụng dịch vụ apache2 và kiểm tra trạng thái
def checkServiceStatus[]:
try: print["View Apache2 service status"]
#Check all the runnung service
for line in os.popen["systemctl status apache2.service"]:
services = line.split[]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
passcheckServiceStatus[]
đầu ra
Sử dụng shlex tách chuỗi
Lớp shlex giúp dễ dàng viết các trình phân tích từ vựng cho các cú pháp đơn giản giống như cú pháp của Unix shell. Điều này thường sẽ hữu ích để viết các ngôn ngữ nhỏ, [ví dụ: trong các tệp điều khiển chạy cho các ứng dụng Python] hoặc để phân tích các chuỗi được trích dẫn
bánh mì. split[s, comments=False, posix=True]- Tách chuỗi s bằng cú pháp giống như trình bao
def checkServiceStatus[]:
try: print["View Apache2 service status"]
#Check apache2 service
for line in os.popen["systemctl status apache2.service"]:
services = shlex.split[line]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
passcheckServiceStatus[]
đầu ra
Dừng dịch vụ Apache2
def stopService[]:
try: #stop apache2 service
os.popen["sudo systemctl stop apache2.service"]
print["Apache2 service terminated successfully..."]
except OSError as ose:
print["Error while running the command", ose]
passstopService[]
đầu ra. Dịch vụ Apache2 đã kết thúc thành công…
Kiểm tra trạng thái sau khi chấm dứtdef checkServiceStatus[]:
try: print["Apache2 status..."]
#Check apache2 service
for line in os.popen["sudo systemctl status apache2.service"]:
services = line.split[]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
passcheckServiceStatus[]
đầu ra
Bắt đầu dịch vụ
def startService[]:
try: #start apache2 service
os.popen["sudo systemctl start apache2.service"]
print["Apache2 service started successfully..."]
except OSError as ose:
print["Error while running the command", ose]
passstartService[]
đầu ra. Dịch vụ Apache2 đã bắt đầu thành công…
Kiểm tra lại trạng tháidef checkServiceStatus[]:
try: print["Apache2 status after start..."]
#Check apache2 service
for line in os.popen["sudo systemctl status apache2.service"]:
#services = shlex.split[line]
services = line.split[]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
passcheckServiceStatus[]
đầu ra
Xem dịch vụ apache2 bằng lệnh ps
ps - ps hiển thị thông tin về lựa chọn các quy trình đang hoạt động. thông tin mặc định để hiển thị bao gồm. ID quy trình [PID], thiết bị đầu cuối điều khiển [TTY], thời gian CPU mà quy trình đã sử dụng và lệnh liên quan. lệnh ps trên Ubuntu để liệt kê và định vị các quy trình hiện đang chạy
tùy chọn 'a' hướng dẫn 'ps' liệt kê các quy trình của tất cả người dùng trên hệ thống thay vì chỉ quy trình của người dùng hiện tại. Tương tự, tùy chọn 'x' bao gồm các quy trình không chạy trong thiết bị đầu cuối, chẳng hạn như quy trình daemon. Vì vậy, đó là lý do tại sao tất cả các quy trình trong hệ thống được liệt kê
Lệnh grep được sử dụng để tìm kiếm tệp văn bản cho các mẫu
def checkServiceStatus[]:
try: print["View Apache2 service status"]
#Check apache2 service
for line in os.popen["ps -ax | grep apache2 | grep -v grep"]:
services = shlex.split[line]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
passcheckServiceStatus[]
đầu ra
Nhận ID quy trình
def listOfRunningServices[]:0
try: print["Listing all running service"]
#Check all the running service
for line in os.popen["systemctl --type=service --state=running"]:
services = line.split[]
print[services]
pass
except OSError as ose:
print["Error while running the command", ose]
pass
đầu ra
Chúng tôi thấy dễ dàng rằng chúng tôi có thể liệt kê các dịch vụ đang chạy và các hoạt động khác thông qua mô-đun os trong Python
Nếu bạn có bất kỳ câu hỏi nào liên quan đến blog của tôi, bạn có thể gửi email tới nutanbhogendrasharma@gmail. com. Cảm ơn vì đã đọc