Hostwinds 튜토리얼

에 대한 검색 결과:


목차


PowerShell이란 무엇입니까?
왜 Linux PowerShell?
Linux PowerShell 설치
추가 Linux PowerShell 예제
결론

Linux와 함께 PowerShell 사용

태그 : Cloud Servers,  Dedicated Server 

PowerShell이란 무엇입니까?
왜 Linux PowerShell?
Linux PowerShell 설치
추가 Linux PowerShell 예제
결론

PowerShell이란 무엇입니까?

PowerShell은 컴퓨터 시스템의 관리를 자동화하는 데 일반적으로 사용되는 크로스 플랫폼 솔루션이지만 일반 코딩에도 사용할 수 있습니다.PowerShell은 명령 줄 쉘, 스크립팅 언어 및 구성 관리 프레임 워크로 구성됩니다.PowerShell은 Windows, Linux 및 MacOS 운영 체제에서 실행됩니다.운영 체제의 근본적인 차이로 인해 일부 PowerShell 명령 (CMDLET)은 의미가 없습니다.예를 들어, PowerShell get-acl Linux 파일 시스템이 NTFS Access Control Lists (ACLS)를 사용하지 않는다는 점에서 Linux 시스템에는 CMDLET가 적용되지 않습니다.사용 가능한 Linux PowerShell CMDLETS 목록을 보려면 실행하십시오. 사령관.

왜 Linux PowerShell?

Linux에서는 한 명령의 출력이 다른 명령으로 배관 될 수 있습니다.예를 들어:

ls | sort -r | more

이 반대 방향은 현재 디렉토리의 내용을 정렬하고 목록 (필요한 경우)을 페이지에 넣습니다.즉, 데이터 스트림 출력입니다 ls 명령은 종류 데이터 스트림 출력이 명령.이것의 PowerShell 아날로그는 다음과 같습니다.

Get-ChildItem | Sort-Object -Descending | Out-Host -Paging

이 질문을 제기하는 것은 왜 기본 버전에서 PowerShell을 사용하고 싶습니까?한 가지 주요 이유는 간단한 데이터 스트림이 아닌 객체가 PowerShell CMDLET 사이에 파이프가 있기 때문입니다.예를 들어, 다른 출력 스트림에서 정보를 추출하기 위해 텍스트를 구문 분석 할 필요가 없습니다.그리고 PowerShell 객체는 일반적으로 그들과 관련된 수많은 속성을 가지고 있기 때문에 상대적으로 쉽게 할 수 있습니다.예를 들어, CRON 서비스의 PID를 찾고 싶다고 가정 해보십시오.첫 번째 시도는 다음과 같습니다.

ps -aux | grep cron

이로 인해 다음과 유사한 출력이 발생합니다.

root      1041  0.0  0.1 126384  1584 ?        Ss   22:25   0:00 /usr/sbin/crond -n
root      3519  0.0  0.0 123360   728 ?        Ss   23:01   0:00 /usr/sbin/anacron -s
root      4089  0.0  0.0 112808   976 pts/1    R+   23:09   0:00 grep --color=auto cron

테이블 헤더를 보지 않고는 말하기는 어렵지만 Cron Pid는 1041 인 것으로 보입니다.이 경우라고 가정하면 첫 번째 줄의 두 번째 열에 액세스해야합니다.첫 번째 단계는 과도한 공백을 줄이는 것입니다.

ps -aux | grep cron | tr -s ' '

이것은 수율 :

root 1041 0.0 0.1 126384 1584 ? Ss 22:25 0:00 /usr/sbin/crond -n
root 3519 0.0 0.0 123360 728 ? Ss 23:01 0:00 /usr/sbin/anacron -s
root 4167 0.0 0.0 112808 972 pts/1 R+ 23:11 0:00 grep --color=auto cron

이제 두 번째 열을 분리 할 수 있습니다 자르다:

ps -aux | grep cron | tr -s ' ' | cut -d ' ' -f 2

생산 :

1041
3519
4274

마지막으로, 우리는 다음과 같이 첫 번째 줄을 잡을 수 있으며, 원하는 결과, 즉 1041을 얻을 수 있습니다.

ps -aux | grep cron | tr -s ' ' | cut -d ' ' -f 2 | head -1

PowerShell cmdlets가 데이터 스트림 대신 개체를 출력한다는 사실을 사용하여 위의 PowerShell 버전은 간단합니다.

(Get-Process -Name crond).Id

이 경우 get -process -name crond CRON 프로세스를 나타내는 객체를 반환합니다.이 객체에는 일련의 유용한 속성이 있으며 그 중 하나는 프로세스 ID (또는 PID)입니다.PowerShell 객체의 속성에 액세스하려면 괄호 안으로 래핑 한 다음 표시된대로 표준 "DOT"표기법을 사용할 수 있습니다.

Linux PowerShell 설치

좋아하는 Linux 풍미에 PowerShell을 설치하려면 Microsoft를 참조하십시오. Linux에 PowerShell 설치.Linux 배포판이 나열되지 않은 경우 고려하십시오 Linux에 PowerShell을 설치하는 대체 방법.

예를 들어, 다음 네 가지 명령은 Centos 7에 PowerShell의 최신 버전을 설치합니다.

# Optionally update all software packages:
  sudo yum -y update
  
# Register the Microsoft repository:
  curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo
    
# Install PowerShell:
  sudo yum -y install powershell
    
# Start PowerShell:
  pwsh

볼 수 있듯이 PowerShell을 설치하는 것은 간단합니다.

추가 Linux PowerShell 예제

하나의 주요 기술은 PowerShell 객체가 실제로 가지고있는 속성을 결정하는 것입니다.이것은 쉽게 달성 할 수 있습니다 그려진 사람 cmdlet.예를 들어, PowerShell 프로세스 객체의 속성을 결정하려면 다음을 사용할 수 있습니다.

Get-Process | Get-Member -Force

이것은 a가 있음을 보여줍니다 프로세스 개체에 대한 속성.따라서 다음과 같이 CPU 사용법과 관련하여 상위 10 개의 프로세스를 나열하는 데 사용할 수 있습니다.

Get-Process | Sort-Object -Property CPU | Select-Object -Property Name, Path, CPU -Last 10

이것은 다음과 유사한 출력을 생성합니다.

Name           Path                                CPU
----           ----                                ---
xfwm4          /usr/bin/xfwm4                     1.95
systemd        /usr/lib/systemd/systemd           3.63
rngd           /usr/sbin/rngd                     7.39
xfce4-terminal /usr/bin/xfce4-terminal            9.35
xrdp           /usr/sbin/xrdp                    22.05
ksoftirqd/0                                      26.21
pwsh           /opt/microsoft/powershell/7/pwsh  27.37
rcu_sched                                        45.44
Xvnc           /usr/bin/Xvnc                     59.27
NetworkManager /usr/sbin/NetworkManager         955.19

유용하지만 전체 시스템 사용 메트릭을 계산할 수 있습니다.첫 번째 컷은 단순히 비 페이지 메모리 (NPM), 페이지 메모리 (PM), 작업 세트 (WS) 및 CPU 사용 값을 합산하는 것입니다.즉, 전체 사용 지표를 다음과 같이 정의합니다.

glightusage = npm + pm + ws + cpu.

PowerShell에서는 다음과 같이 달성 할 수 있습니다.

Get-Process | Select-Object -Property @{Label = 'OverallUsage'; Expression = {$_.NPM + $_.PM + $_.WS + $_.CPU}}

그만큼 @{} 해시 테이블 (즉, 키/값 쌍)은 우리가 전체적으로 그의 정의는 위에 표시된 표현입니다.이 표현에서 $_ 파이프 라인 객체를 나타냅니다.이 경우 개별 프로세스 개체 프로세스를 얻으십시오 반환 (실행중인 Linux 프로세스 당 하나).그런 다음 네 가지 속성을 요약합니다.이로 인해 다음 (처음 몇 줄)이 발생합니다.

    OverallUsage
    ------------
          520192
       815104.03
          794624
         1093632
      4902912.01
      3330048.37

이제이 두 개념을 다음과 같이 결합 할 수 있습니다.

Get-Process | Select-Object -Property Name, Path, @{Label = 'OverallUsage'; Expression = {$_.NPM + $_.PM + $_.WS + $_.CPU}} | Sort-Object -Property OverallUsage -Bottom 10

이것은 다음과 유사한 상위 10 가지 전체 사용 테이블을 생성합니다.

Name                Path                             OverallUsage
----                ----                             ------------
Thunar              /usr/bin/thunar                    14073856.2
xfce4-power-manager /usr/bin/xfce4-power-manager       15970304.3
xfce4-panel         /usr/bin/xfce4-panel               16195584.9
xfdesktop           /usr/bin/xfdesktop                17588224.59
tuned               /usr/bin/python2.7                18898945.66
yum-cron            /usr/bin/python2.7                 22335488.2
xfce4-terminal      /usr/bin/xfce4-terminal            23642123.4
xrdp                /usr/sbin/xrdp                    26570776.34
Xvnc                /usr/bin/Xvnc                     82710598.14
pwsh                /opt/microsoft/powershell/7/pwsh 298852382.66

둥근 사용 값을 표시하는 경우 다음을 사용할 수 있습니다.

Get-Process | Select-Object -Property Name, Path, @{Label = 'OverallUsage'; Expression = {[Math]::Round($_.NPM + $_.PM + $_.WS + $_.CPU)}} | Sort-Object -Property OverallUsage -Bottom 10

그만큼 [Math] :: Round () 함수는 개별 합계를 가장 가까운 전체 값으로 반올림하는 데 사용됩니다.

결론

표준 Linux 명령이 PowerShell CMDLET보다 더 의미가있는 시나리오가 많이 있으며, 여러 경우에 따라 다른 방법으로는 두 패러다임을 함께 사용할 수 있다는 것입니다.간단한 예로 : 다음을 고려하십시오.

Get-Process | Select-Object -Property Name, Path, Responding, Id |  grep cron

이것은 생성됩니다 :

anacron    /usr/sbin/anacron    True   3018
crond      /usr/sbin/crond      True   1033
yum-cron   /usr/bin/python2.7   True   4760

세 번째 열은 프로세스가 응답하는지 여부를 나타냅니다.

보시다시피 PowerShell과 PowerShell과 Linux 명령의 조합은 다양한 문제와 작업을 해결하고 단순화 할 수있는 충분한 기회를 제공합니다.

작성자 Karlito Bonnevie  /  4 월 26, 2022