自動化メンテナンスのshell関連


1運用次元の概要
機能開発以外のすべてのアクティビティは、運用次元に関連しています.
2自動化メンテナンス:
自動化によるメンテナンスアクティビティの実装一般的にshellスクリプトによる自動化
3 shellは命令解釈
アプリケーションとOSの間
4 shell分類:
一般的にshellはコマンドラインshell(linux下shell(bash))です.
5現在のシステムshellバージョンの表示
echo $SHELL

6システム互換性サポートのshellタイプを表示します.
cat /etc/shells

7 shellスクリプト:
shellスクリプトと呼ばれるファイルにコマンドを配置して実行します.
8スクリプト作成
	1      (   vim)
	2     :1       2 .sh  
	3     :          
	4   :     python  ,    ::<

9スクリプト実行
	1 bash    (   shell,  shell        )
	2 ./    (   shell(      ),   shell        )
	3 source    (  python import   ) (     shell        )

10開発仕様
	1        
	2         
	3     (  python  )

11変数定義
	    
		1    =    (          )
		2    ='   ' (         )
		3    ="   " (     )
	    (                )
	   =`  `
	   =$(  )
		                 

12変数アクセス
	1 ​ $    
	2 ​ "$   " (         )
	3 ${   } (       )
	4  "${   }" (    )
	
	unset     (    )

13変数の分類:
	    (        )
	    (    )
		 1         :
			env
		2   :
			   = 
			export   
			(      )
                        export    =  (   )
		3     
			  shell  shell( shell   shell     )
			         :
			1   ~/.bashrc (        ,source           shell  )
			2   /etc/profile (       ,source          )
	    
	1    
		$0      
		$$          
		$n     n   (    :     s g b )
		$#     
		$?            (0-  , 0-  ,,           ,               )
	
	2      
		${   :    :    }
		(     0-X)
	3    
		${   :-   } (            )
		${   :+    } (            )

14式
	      
	1     
		test   
		[    ] (            )
		1      (             )
			n1 -eq n2   
			n1 -gt n2   
			n1 -ge n2     
			n1 -lt n2   
			n1 -le n2     
			n1 -ne n2    
		2      
			== != (     )
	2      
		  1 &&   2 (1     2)
		  1 ||   2 (1     2)	
	3      
		-f        
		-d        
		-x           (     )
	4      
		$((    ))
		let   	

15一般的な記号
	1    
		       :
			1    (        )
			2    (        )
		     :
			bash 6-chongdingxiang.sh > res.log 2> err.log
		     :
			bash 6-chongdingxiang.sh > res.log 2>&1
		  :
			bash 6-chongdingxiang.sh > /dev/null 2>&1
	2    
		  1 |   2
		(  1       2   )
	3      
		   &
		(          )

16共通コマンド
        1 grep(    )
		grep -rn  bash .
		(                ,    bash      )

	2 find (    )
		find . -name *chong*
		(                 chong   )
	3 sed 	
		-i         
		
		  :
			sed -i  "2s#sed#SED#1" sed.txt
			("2(   )s  #sed(   )#SED(     )#1( 1       ---》g      )")
		
		  :
			sed "2a\hello" sed.txt 
			"2(   )a(    )\hello(     )"
			sed "4i\world" sed.txt
			"4(   )i(    )\world(     )"
		  :
			sed "3(   )d(  )" sed.txt
	4 awk	
		awk '{print $1,$3}' awk.txt
		  awk.txt        1   3 ,       
		    :
			FILENAME:   
			NR:  
				awk 'NR==2 {print $2}' awk.txt
				(    2 )
			NF:  
				awk '{print $NF}' awk.txt
				(      )
			FS:      
				awk 'BEGIN{FS="awk"} {print $3}' awk.txt
				(       awk)
				awk -F "awk" ' {print $3,$1}' awk.txt
				(-F    )
			OFS:          
				awk -F "awk" 'BEGIN{OFS="->"} {print $3,$1}' awk.txt
				(                ->)

17ブランチ
	1 if  
		if [    ]
		then
			   1
		elif [   2 ]
		then
			  2
		else
			  3
		fi
			
	2 case  (        )
		case     in
		    1)
			    1
				 ;;
		   ...
		    n)
			   n
				 ;;
			*)
				      
			;;
		esac

18サイクル
	1 for  
		for   in   (        --》    )
		do
		       
		done
	
	2 while  
		while   
		do
		       
		done

19関数
	1     
		   () {
			   
			$n       n   
		}
	2     
		      1   2
		
	3    (       )
		     return      0~255   
		     $?         
		
	4             

20 shellのコマンドタイプ:
	1     ---》which      
	2   -------》file       
	3   -------》        
	
	         :
		export WORKON_HOME=/root/.venv
		source /usr/local/bin/virtualenvwrapper.sh

21コードリリース
>>1プロセス
	1     
		git push
	2     (       )
		1       
		2     
		tar zcf            
		zcat      (         )
	3     
		scp         
		     --  ---》     
		(                )
	4     
		              
	5     
		tar xf      
	6     
		      
		      :
		mv yasuo.tar.gz Desktop/yasuo.tar.gz-`date +%Y%m%d%H%M%S`
	7     
		              
	8   
		netstat -tln | grep 80

>>2基礎環境
	1     
		          
		mkdir /data/{server,logs,backup,softs,virtual,scripts,codes} -p
		(         ,          )

	2      
		1         
			ssh-keygen -t rsa
		2          
			     /etc/ssh/sshd_config             (AuthorizedKeysFile	%h/.ssh/authorized_keys)
			         
		3   ssh  
			sudo service ssh restart

>>3プロジェクト環境
	1,    
		export WORKON_HOME=/data/virtual/
		source /usr/local/bin/virtualenvwrapper.sh
		mkvirtualenv -p python3 django
	2 Windows linux   (   xshell   )
		rz------win linux
		sz -----linux win
		
	3 Django  
		1   
			1   INSTALL  
			2 python setup.py build (  )
			3 python setup.py install
			
		2     
			1       
			2     
				django-admin startproject itcast
			3        
				python manage.py startapp test1
				  settings  
			4     
				  views.py--->         
				url    
				  urls
			5     
				python manage.py runserver >/dev/null 2>&1 &