顧名思義,進程即正在執行的一個過程。進程是對正在運行程序的一個抽象。php
進程的概念起源於操做系統,是操做系統最核心的概念,也是操做系統提供的最古老也是最重要的抽象概念之一。操做系統的其餘全部內容都是圍繞進程的概念展開的。html
因此想要真正瞭解進程,必須事先了解操做系統:http://www.cnblogs.com/linhaifeng/p/6295875.html
python
PS:即便能夠利用的cpu只有一個(早期的計算機確實如此),也能保證支持(僞)併發的能力。將一個單獨的cpu變成多個虛擬的cpu(多道技術:時間多路複用和空間多路複用+硬件上支持隔離),沒有進程的抽象,現代計算機將不復存在。git
必備的理論基礎:web
*1.操做系統的做用:
1:隱藏醜陋複雜的硬件接口,提供良好的抽象接口。
2:管理、調度進程,而且將多個進程對硬件的競爭變得有序。
*2.多道技術:
1.產生背景:針對單核,實現併發
ps:
如今的主機通常是多核,那麼每一個核都會利用多道技術。
有4個cpu,運行於cpu1的某個程序遇到io阻塞,會等到io結束再從新調度,會被調度到4個。
cpu中的任意一個,具體由操做系統調度算法決定。
2.空間上的複用:如內存中同時有多道程序。算法
3.時間上的複用:複用一個cpu的時間片。
強調:遇到io切,佔用cpu時間過長也切,核心在於切以前將進程的狀態保存下來,這樣才能保證下次切換回來時,能基於上次切走的位置繼續運行。編程
1.理論部分:http://www.javashuo.com/article/p-gydliqpd-r.htmlpython3.x
2.實踐部分:http://www.javashuo.com/article/p-ppoolbjl-d.html服務器
1.理論部分:http://www.javashuo.com/article/p-qtmswgdx-r.html多線程
2.實踐部分:http://www.javashuo.com/article/p-vjvhxxle-w.html
協程相關內容:https://www.cnblogs.com/Jame-mei/p/9698633.html
待更新...
1.介紹
paramiko時一個用於作遠程控制的模塊,使用該模塊能夠對遠程服務器進行命令或者文件操做,值得一說的是,fabric和ansible 內部的遠程管理都是使用paramiko來實現的。
2.下載安裝
pi3 install paramiko #在python3.x中
pycrypto,因爲 paramiko 模塊內部依賴pycrypto,因此先下載安裝pycrypto #在python2中 pip3 install pycrypto pip3 install paramiko 注:若是在安裝pycrypto2.0.1時發生以下錯誤 command 'gcc' failed with exit status 1... 多是缺乏python-dev安裝包致使 若是gcc沒有安裝,請事先安裝gcc
3.使用SSHClient 和 SFTPClient
1):SSHClient
# @Time : 2018/9/14 10:05 # @Author : Jame import paramiko #1.建立ssh對象 ssh=paramiko.SSHClient() #2.運行鏈接不在know_hosts文件中的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) #3.鏈接服務器 ssh.connect(hostname='10.0.0.1',port=22,username='test',password='123') #4.執行命令,收取執行的結果 stdin,stdout,stderr=ssh.exec_command('df -h') #5.獲取命令 result=stdout.read() print(result.decode('utf-8')) #6關閉鏈接 ssh.close()
# @Time : 2018/9/14 10:13 # @Author : Jame import paramiko #1.建立transport對象 transport=paramiko.Transport(('10.0.0.1',22)) #2.鏈接服務器操做 transport.connect(username='test',password='123') #3.用sshclient建立ssh對象 ssh=paramiko.SSHClient() ssh._transport=transport #4.用sshclient的對象運行命令 stdin,stdout,stderr=ssh.exec_command('data') #5.收取命令結果 res1=stdout.read() res2=stderr.read() #6.打印 res=res1+res2 print(res.decode('utf-8')) #7.關閉transport對象 transport.close()
# @Time : 2018/9/14 10:05 # @Author : Jame import paramiko #1.建立ssh對象 ssh=paramiko.SSHClient() #2.運行鏈接不在know_hosts文件中的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) #3.鏈接服務器 ssh.connect(hostname='54.223.43.144',port=22,username='jame',password='Tk1d^2(W+21') #4.執行命令,收取執行的結果 stdin,stdout,stderr=ssh.exec_command('df -h') #5.獲取命令 result=stdout.read() print(result.decode('utf-8')) #6關閉鏈接 ssh.
# @Time : 2018/9/14 10:13 # @Author : Jame import paramiko #1.建立transport對象 transport=paramiko.Transport(('54.223.43.144',22)) #2.鏈接服務器操做 transport.connect(username='jame',password='Tk1d^2(W+21') #3.用sshclient建立ssh對象 ssh=paramiko.SSHClient() ssh._transport=transport #4.用sshclient的對象運行命令 stdin,stdout,stderr=ssh.exec_command('data') #5.收取命令結果 res1=stdout.read() res2=stderr.read() #6.打印 res=res1+res2 print(res.decode('utf-8')) #7.關閉tr
# @Time : 2018/9/14 10:34 # @Author : Jame import paramiko #1.設置私鑰地址 private_key=paramiko.RSAKey.from_private_key_file(r'D:\gitclient\Huge-psiot-test.pem') #2.建立ssh 對象 ssh=paramiko.SSHClient() #3.容許鏈接不在know_hosts文件中的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) #4.鏈接服務器 ssh.connect(hostname='54.223.68.72',port=22,username='ec2-user',pkey=private_key) #5.執行命令 msg=input('請輸入執行命令:').strip() stdin,stdout,stderr=ssh.exec_command(msg) #6.獲取命令結果 res1=stderr.read() res2=stdout.read() res=res1+res2 print(res.decode('utf-8')) #7.關閉鏈接 ssh.close()
# @Time : 2018/9/14 13:11 # @Author : Jame import paramiko #1.設置私鑰地址 private_key=paramiko.RSAKey.from_private_key_file(r'D:\gitclient\Huge-psiot-test.pem') #2.鏈接獲取transport對象 transport=paramiko.Transport(('54.223.68.72',22)) transport.connect(username='ec2-user',pkey=private_key) #3.獲取ssh對象 ssh=paramiko.SSHClient() ssh._transport=transport #4.發送指令,收取命令 stdin,stdout,stderr=ssh.exec_command('df') result=stdout.read() print(result.decode('utf-8')) transport.close()
2):SFTPClient
# @Time : 2018/9/14 13:22 # @Author : Jame import paramiko transport=paramiko.Transport(('10.0.0.1',22)) transport.connect(username='test',password='123') sftp=paramiko.SFTPClient.from_transport(transport) #上傳,將本地E:\pythonwork ...testparakio.txt 上傳到/tmp下 sftp.put(r'E:\pythonwork\s14\day11\paramiko模塊練習\testparamiko.txt','/tmp/paramikotest.txt') #下載,將/tmp下的server.txt 下載到本地E:python.... sftp.get('/tmp/server.txt',r'E:\pythonwork\s14\day11\paramiko模塊練習\server.txt') transport.close()
# @Time : 2018/9/14 13:22 # @Author : Jame import paramiko #設置密鑰地址 private_key=paramiko.RSAKey.from_private_key_file(r'D:\gitclient\Huge-psiot-test.pem') transport=paramiko.Transport(('10.0.0.1',22)) transport.connect(username='ec2-user',pkey=private_key) sftp=paramiko.SFTPClient.from_transport(transport) #上傳,將本地E:\pythonwork ...testparakio.txt 上傳到/tmp下 sftp.put(r'E:\pythonwork\s14\day11\paramiko模塊練習\testparamiko.txt','/tmp/paramikotest.txt') #下載,將/tmp下的server.txt 下載到本地E:python.... sftp.get('/home/ec2-user/php-5.6.36.tar.gz',r'E:\pythonwork\s14\day11\paramiko模塊練習\php-5.6.tar.gz') transport.close()
1 # @Time : 2018/9/14 15:12 2 # @Author : Jame 3 import paramiko 4 import uuid 5 6 class Haproxy(object): 7 8 def __init__(self): 9 self.host='10.0.0.1' 10 self.port=22 11 self.username='jame' 12 self.pwd='AiMeiNv' 13 self.__k=None 14 15 16 def create_file(self): 17 file_name=str(uuid.uuid4()) 18 with open(file_name,'w') as f: 19 f.write('sb') 20 21 return file_name 22 23 24 def run(self): 25 self.connect() 26 self.upload() 27 self.rename() 28 self.close() 29 30 def connect(self): 31 transport=paramiko.Transport((self.host,self.port)) 32 transport.connect(username=self.username,password=self.pwd) 33 self.__transport=transport 34 35 36 def close(self): 37 self.__transport.close() 38 39 40 def upload(self): 41 #鏈接,上傳 42 file_name=self.create_file() 43 sftp=paramiko.SFTPClient.from_transport(self.__transport) 44 sftp.put(file_name,'/tmp/tt.py') 45 46 47 def rename(self): 48 ssh=paramiko.SSHClient() 49 ssh.__transport=self.__transport 50 stdin,stdout,stderr=ssh.exec_command('mv /tmp/tt.py /tmp/rename.py') 51 #result=stdout.read() 52 #print(result.decode('utf-8')) 53 54 55 56 ha=Haproxy() 57 ha.run()
題目:簡單主機批量管理工具
需求:
代碼地址:https://gitee.com/meijinmeng/Simple_host_system.git