by 에일린 프리쉬(AEleen Frisch), Windows 2000 Commands Pocket Reference의 저자
윈도우 NT와 2000은 GUI 기반의 운영 체제이다. 둘 다 그렇게 디자인되었기 때문에, 사람들은 두 가지 시스템을 호환하여 사용할 수 있다. 하지만 GUI 시스템 관리자 툴은 유연성이 적고 장황하기 때문에 시스템 관리자가 좋아하지 않는다. 게다가 사람들이 윈도우 NT 작업을 수행하는 명령행이 없는 것에 대해 불평하는 것은 전혀 놀랄만한 일이 아니다(오히려 당연하다). 많은 경우에 있어서 작업을 처리하기 위해서는 반드시 GUI를 사용해야 한다.
이것은 전에 있었던 운영 체제보다 훨씬 개선된 윈도우 2000의 기능 중 하나이다. 마이크로소프트에 있는 한 동료는 "명령행으로 많은 것을 할 수 없다는 것은 윈도우 2000에 대해서 잘 모르고 하는 말이다." 라고 하였다. 윈도우 2000에 부가적인 툴을 모두 설치하였다면 현재로서는 이 말이 옳다. 툴 중에서 가장 중요한 것은 리소스킷(Resource Kit)이다. 이것을 별도로 구매해야만 하지만 돈을 지불할 가치가 충분히 있다(설치했을 때, 이 파일은 %SystemRoot%\Program Files\Resource Kit 에 저장된다). 그리고 배포된 CD에 있는 부가적인 툴을 모두 설치해야 한다.
- \Support\Tools\Setup: 툴을 %SystemRoot%\Program Files\Support Tools에 설치한다.
- \I386\AdminPak.MSI: 툴을 표준 시스템 소프트웨어 트리에 설치한다(예를 들어 %SystemRoot%에 설치한다).
- \Support\Tools\Deploy.Cab: 설치를 원하는 어느 곳에든 수동으로 설치할 수 있는 시스템 설치 자동화 툴이 들어있다.
- \ValueAdd\3rdParty\Mgmt\Winstel\SwiAdmLE.MSI: MSI 파일 관련 툴을 %SystemRoot%\Program Files\VERITAS Software에 설치한다.
앞의 두 패키지는 일반적인 툴을, 뒤의 두 가지는 운영 체제나 소프트웨어를 자동으로 설치하고 배치하는 것과 관련이 있는 툴을 담고 있다.
이 글에서는 시스템 관리자와 프로그래머에게 유용한 10 가지 중요한 윈도우 2000 명령어를 소개하고자 한다(대부분은 리소스킷에 있다). 명령어는 효율성을 높여주고 관리 자동화 업무에 유용한 것과, 윈도우 2000의 새로운 함수를 가져오거나 지원하는 것으로 나누어져 있다. 다음 표에서 내용을 목록으로 정리하였다.
dnscmd: DNS를 관리한다.
도메인 네임 서비스(DNS: Domain Name Service)는 전체 액티브 디렉토리 상위구조가 남아있는 기본 네트워크 네임 resolution 서비스를 공급한다. dnscmd 명령어를 사용하면 로컬 시스템이나 떨어져 있는 특정 시스템에서 DNS 서비스(서버 프로세스)를 감시하고 관리할 수 있다.
dnscmd [
server] /
action [
additional options/args]
첫 번째 옵션은 명령어로 하려고 하는 일을 보여주며, 부가적인 옵션과(옵션이나) 독립 인자를 통해 그것을 수행하기 위해 필요한 정보를 제공한다. 명령에는 많은 옵션이 있다. 그 중에서 중요한 것들을 들자면 다음과 같다.
- /info: DNS 서버에 관한 일반 정보를 보여준다.
- /statistics: DNS 서버에 관한 상세 통계를 보여준다. 통계를 보기를 원할 때에는 이 옵션 뒤에 마스크를 추가할 수 있다(마스크 목록을 보려면 dnscmd /statistics /help라고 입력한다). 예를 들면, 다음 명령을 사용하면 서버의 가용 시간과 메모리 사용 통계 목록을 볼 수 있다.
C:\> dnscmd /statistics 00010001
DNS Server . statistics:
DNS Server Time Statistics
--------------------------
Server start time 4/10/2001 3:21:18 PM
Seconds since start 87495
Stats last cleared 4/10/2001 3:21:18 PM
Seconds since clear 87495
Memory Stats:
-------------
Memory:
Total Memory = 58332
Alloc Count = 5881
Free Count = 5636
...
|
- /zoneinfo: 다음 인자로서 주어진 DNS 영역에 대한 정보를 보여준다.
- /restart: 지정된 컴퓨터에 있는 DNS 서버 프로세스를 재시작한다.
- /clearcache: 지정된 서버에 있는 네임 캐시를 클리어한다.
- /zoneadd: DNS 서버를 설정하는 다양한 옵션 중 하나이다. 이 옵션은 새로운 영역을 추가한다. 예를 들면, 다음 명령은 dalton이라는 호스트를 영역의 1차적인 서버로 지정하며, 로컬 시스템이 ahnia.com이라는 영역에서 세컨더리 서버가 되게 한다.
C:\> dnscmd /zoneadd ahania.com /secondary dalton
|
더 자세한 내용을 알고 싶으면 명령어에 관한 문서를 참고하라. netsh 명령어를 사용하면 명령행에서 네트워킹이나 네트워크 서비스와 관련된 많은 작업을 수행할 수 있다.
delsrv: 서비스를 제거한다.
윈도우 2000 서비스는 관리자가 다루기 수월하고, 설치하기도 쉽다. 많은 애플리케이션에서는 자동으로 설치되며, 리소스킷에 있는 instsrt 명령어를 사용하면 마법사가 그러한 작업을 한다. srvany는 거의 모든 애플리케이션에 적용할 수 있으며, 애플리케이션이 서비스로 작동하게 만들어 준다. 그 동안 서비스를 제거하기는 힘들었지만, delsrv 명령어를 사용하면 쉽게 할 수 있다. 서비스를 인자를 제거하듯이 지정하면 된다. 예를 들어서, 다음 명령어를 사용하면 리모트 킬(Remote Kill) 서비스(rkill 명령을 지원하는 서비스)를 없앨 수 있다.
C:\> net stop "remote process killer"
C:\> delsrv "remote process killer"
|
sclist 명령을 사용하면 설치된 서비스의 공식 명칭을 알 수 있다.
C:\> sclist
--------------------------------------------
- Service list for Local Machine
--------------------------------------------
running Alerter Alerter
stopped AppMgmt Application Management
running Browser Computer Browser
...
running Remote Process Killer Remote Process Killer
|
forfiles: 파일을 수행한다.
forfiles는 윈도우 2000/NT 스크립팅 언어에서 새로 추가된 명령이다. 그것은 각 파일 모음에서 명령을 수행하며, 구문이 일반적이다.
forfiles options -c"
command"
초기 옵션에서 원하는 파일 셋이 명기되어 있으며, -c 옵션에서 실행해야 하는 명령을 지시한다. 모든 옵션은 선택적이며, 인자가 없는 forfiles 명령은 현재 디렉토리에 있는 모든 파일의 이름을 보여준다.
필자가 생각하기에는 다음 옵션이 가장 유용한 것 같다.
- -pdir: 시작 디렉토리를 지정한다(기본값은 현재 디렉토리).
- -s: 서브 디렉토리를 포함한다.
- -mstring: 파일 이름을 지정한다(기본값은 *.*).
- -d±date-or-number: 특정 날짜(형식: mmddyyyy) 이전이나 이후에 수정된 파일만을 선택한다.
- -c"command": 각각의 매치되는 파일에서 실행될 것을 명령한다(디폴트는 "cmd /c echo @FILE"이다). 다음 구조는 파일명의 다양한 부분과 그 안에 다른 정보를 포함하기 위한 것으로서 명령어 안에 포함될 수 있다: @FILE, @FNAME_WITHOUT_EXT, @EXT, @PATH, @RELPATH, @ISDIR, @FSIZE, @FDATE, @FTIME
예제를 통해 살펴보도록 하자. 다음 명령은 현재 디렉토리와 하위 디렉토리를 포함하여 확장자가 .raw인 모든 파일의 이름을 보여준다.
C:\>
forfiles -s -m*.raw
다음 명령은 E: 드라이브에 있는 모든 .raw 파일의 확장자를 .dat으로 변경한다.
C:\>
forfiles -pe:\ -s -m*.raw -c"cmd /c ren @FILE
@FNAME_WITHOUT_EXTENSION.dat"
다음 명령은 F:\Scratch 아래에 있는 파일을 모두 삭제하지만 하위 디렉토리는 남겨 둔다.
C:\>
forfiles -pf:\scratch -s -m*.* -c"cmd /c if @ISDIR==FALSE del
@FILE"
다음 명령은 현재의 디렉토리에서 각각의 .c 파일에 지시된 펄 스크립트를 실행한다.
C:\>
forfiles -m*.c -c"pretty.pl @FILE"
Forfiles는 유닉스의 foreach(C 셸)과 find 명령어와 유사하다.
linkd: 링크를 생성한다.
윈도우 2000에서는 새로운 버전인 NTFS에서 reparse points라는 새로운 파일시스템(filesystem) 구조를 소개하였다. 비록 디렉토리(폴더)에서만 운영되며 개별적인 파일에서는 운영되지 않지만, 이 엔티티는 유닉스의 심볼릭 링크와 다소 비슷하다. linkd 명령은 폴더나 드라이브에 링크를 생성하는 데에 사용될 수도 있으며, 링크 이름을 취하고 목표 디렉토리를 인자로 삼는다. 예를 들어서 다음 명령은 C:\RK를 C:\Program Files\Resource Kit의 링크로서 생성한다.
C:\>
linkd c:\rk "c:\program files\resource kit"
RK는 디렉토리 리스트에서 다음과 같이 나타난다.
Volume in drive C is System Volume Serial Number is 40F8-C78D
Directory of C:\
04/09/2001 04:10p Documents and Settings
04/09/2001 04:18p Program Files
04/12/2001 09:48a RK
04/11/2001 04:10p temp
04/11/2001 03:34p WINNT
0 File(s) 0 bytes
5 Dir(s) 1,459,015,680 bytes free
|
(junction은 하위 디렉토리에 링크되는 리파싱 포인트의 이름이다.)
리파싱 포인트를 제거하려면 일반적인 del 명령이 아니라 delrp 명령을 사용해야 한다는 점에 주의하자.
ps.vbs와 pmon: 실행중인 프로세스의 목록을 보여준다.
새로운 시스템을 접할 때 마다, 나는 무엇이 실행중인지와 디스크 공간이 얼마나 되는지, 이 두 가지가 항상 궁금했다. 윈도우 2000에서는 현재 실행중인 프로세스를 보여주는 유용한 명령어가 두 가지 있다. 하나는 리소스킷에 포함된 80가지 이상한 비주얼 베이직 샘플 스크립트 중 하나이다. ps.vbs를 사용하면 프로세스 ID, 이미지 이름, 실행 가능한 파일의 완전한 패스 등의 리스트를 볼 수 있다. 이 명령어는 아래와 같은 내용을 출력한다.
C:\> cscript "c:\program files\resource kit\ps.vbs"
PROCESS ID NAME EXECUTABLE PATH
0 System Idle Pr (null)
8 System (null)
172 smss.exe C:\WINNT\System32\smss.exe
200 csrss.exe (null)
220 winlogon.exe C:\WINNT\system32\winlogon.exe
248 services.exe C:\WINNT\system32\services.exe
...
|
ps.vbs로 볼 수 있는 내용은 간단하지만, 다른 프로세스 디스플레이 명령어나 GUI 유틸리티로는 볼 수 없는 정보를 제공하므로, 유용하다. 이와는 반대로 pmon을 사용하면 데이터 실행중인 프로세스에 있는 데이터를 풍부하게 보여주며, 다음과 같이 내용이 계속 업데이트 되어 나타난다(아웃풋이 절단되어 나타난다).
View display output.( http://windows.oreilly.com/news/win2kcommands_code.html)
이 아웃풋에서는 CPU와 메모리 사용, 페이지 오류율 등과 관련된 다양하고 유용한 데이터를 제공한다. 첫 번째 줄에서는 파일 버퍼 캐시로서 현재 사용중인 메모리를 보여준다.
이 명령은 유닉스의 ps나 top 명령과 비슷하다.
regfind: 레지스트리 검색 및 수정
레지스트리 검색은 윈도우 NT에서 약한 부분이었다. 이것은 윈도우 2000에서 regfind라는 명령을 추가하면서 개선되었다. 이 명령은 다음과 같은 일반 구문을 가진다.
regfind [
/m host] [
options]
search-string[
/r replace-string]
/m 옵션은 명령이 어느 호스트에서 수행되는지를 보여주는 데에 사용될 수도 있다. 그밖에 다음과 같은 옵션도 유용하다.
- /pkey : 지정된 키에서부터 검색을 시작한다.
- /n: 키, 값, 데이터를 검색한다.
- /y: 대소문자 구분을 한다.
예를 들면, 다음 명령은 모든 데이터나 값을 검색하여 "dog"이라는 스트링을 찾으며, 매치되는 것을 한 가지 찾아냈다.
C:\>regfind dog
Scanning \Registry registry tree
Search for "dog"
Will match values of type: REG_SZ REG_EXPAND_SZ REG_MULTI_SZ
\Registry
Machine
SYSTEM
ControlSet001
Services
dmserver
Description = Logical Disk Manager Watchdog Service
|
다음 명령은 대소문자에 상관 없이 "e:\scratch" to "F:\New_Scratch"의 모든 인스턴스를 변경한다.
C:\>
regfind /y e:\scratch /r F:\New_Scratch
Scanning \Registry registry tree
Case Insensitive Search for "e:\scratch"
Will match values of type: REG_SZ REG_EXPAND_SZ REG_MULTI_SZ
Will replace each occurrence with: "F:\New_Scratch"
...
하지만 이 유틸리티를 사용할 때에는 항상 주의해야 한다. 특히 이 유틸리티는 에러 체크를 하지 않기 때문에 잘 알지 못하고 사용할 경우에는 혼란을 초래할 수 있다.
rkill: 원격 프로세스의 목록을 보여주거나 제거한다.
사람들은 대부분 윈도우 2000의 kill 명령을 로컬 프로세스를 없애는 데에 사용할 수 있다고 알고 있다. 리소스킷에서는 이 기능을 원격 시스템에까지 확장해서 사용할 수 있는 리모트 킬(Remote Kill) 서비스를 제공한다. 이와 관련된 명령인 rkill을 사용하기 위해서는, 이 서비스가 원격 시스템(프로세스를 없애기를 원하는 시스템)에서 실행 중이어야 한다. 그것을 /install 옵션을 사용하는 시스템에 설치할 수 있다. 예를 들어 다음 명령은 dalton이라는 호스트에 서비스를 설치한다.
C:\>
rkill /install \\dalton
일단 설치가 완료되면, /view 옵션을 사용하여 현재의 프로세스 목록을 특정 호스트에서 볼 수 있고, /kill 옵션으로 프로세스를 제거할 수 있다. 예를 들어서 다음 명령은 원격 newton 호스트의 2288 프로세스를 제거한다.
C:\>
rkill /kill \\newton 2288
다음 명령은 동일한 호스트에서 실행중인 모든 명령 셸을 제거한다.
C:\>
rkill /kill \\newton cmd
이는 유닉스의 kill과 killall 명령과 비슷하다.
runas: 다른 사용자로서 명령을 실행한다.
시스템을 관리할 때 가장 좋은 습관은 꼭 필요할 때에만 관리자로서 명령을 실행하고, 일상적으로는 권한이 없는 사용자 계정을 사용하는 것이다. 윈도우 NT에서는 이것이 불가능했지만, 윈도우 2000에서는 runas 명령을 사용하여 그렇게 할 수 있다. 이 명령을 사용하면 적절한 암호를 제공하기 때문에, 특정 명령을 다른 사용자가 하는 것처럼 실행할 수 있다.
가장 편한 방법 중 하나는 다음과 같이 일반 사용자로 로긴했을 때 관리자로서의 명령을 수행하는 것이다.
C:\> runas /user:administrator@ahania.com cmd
Enter password for administrator@ahania.com: **********
Attempting to start "cmd" as user
"administrator@ahania.com"...
|
runas를 사용하면 요청된 패스워드를 만들어 내고 다른 명령 셸을 새 창에서 시작한다. 이 명령을 윈도우 2000 영역에서 실행할 때 원하는 사용자 계정의 완전히 인증된 사용자명을 사용해야 한다는 점을 기억하자.
이는 유닉스의 su 명령과 비슷하다.
subinacl: ACL을 수정한다.
subinacl은 접근 한 운영체제에 있는 파일 그룹의 통제 리스트(ACL: access control list)를 수정하는 강력한 유틸리티이다. 일반적으로 신택스는 다음과 같다.
subinacl options /
type items /
action
type 옵션은 ACL이 수정되는 엔티티의 종류를 알려주며(/file, /share, /subdirectories, /keyreg, subkeyreg, /service, /printer, /kernelobject 등), items는 수정된 특정 아이템이며, /action은 수행할 연산을 보여준다. 다양한 액션 옵션이 있지만, 다음에 소개할 것들이 가장 중요하다.
- /owner=user: 아이템의 소유를 설정한다.
- /replace=olduser=newuser: newuser에 적용하기 위해 olduser의 엔티티를 재작성한다.
- /changedomain=olddomain=newdomain: 적용 가능한 모든 엔티티에서 olddomain 을 newdomain로 대체한다.
- /grant=name=perm: 어떤 사용자나 그룹에 특정 접근을 허용한다. 반대로, /deny는 특정 사용자나 그룹이 접근할 수 없게 하는 명령이다. /revoke=name은 특정 사용자나 그룹에 적용되는 엔트리를 제거할 수 있다.
동일한 명령에 다양한 액션을 지정할 수 있다. 예를 들어서, 다음 명령은 D:\Data에 있는 모든 파일에 대한 ACL 목록에서 사용자 harvey를 chavez로 변경하며, 같은 파일에 대해 사용자 claire에게는 읽기 권한을 부여한다.
C:\>
subinacl /subdirectories \\mango\D$\Data^
/replace=harvey=chavez /grant=claire=R
로컬 경로명은 UCE 포맷으로 지정되어 있다는 점을 기억하자. 이는 RPC의 위치가 바르게 지정되기 위해 반드시 필요하다. 깜빡 잊고 로컬 패스네임을 입력하였다면, 다음과 같은 에러가 나타날 것이다.
... The RPC server is unavailable.
마지막으로 /testmode 옵션은 ACL 엔트리를 실제로 변경하지 않고 액션을 미리 보는 것으로 설정되어 있을 것이다.
where: 실행할 수 있는지 판단하거나 파일의 장소를 지정한다.
사용자 환경이 대부분 그렇듯이, 윈도우 2000은 사용자가 어디에서 명령을 실행시키든 간에 실행 가능한 파일의 위치를 지정하는 검색 패스를 사용한다. 윈도우 2000의 where 명령을 사용하면 사용 가능한 파일 중 어떤 것이 사용중인지 더 쉽게 판단할 수 있다. 예를 들어서 이 명령은 "notepad"라는 이름으로 시작하는 모든 파일의 검색 경로의 컴포넌트를 검색함으로써 notepad 명령으로의 경로를 알려준다.
C:\> where notepad*
C:\WINNT\system32\notepad.exe
C:\WINNT\NOTEPAD.EXE
|
한 개 이상의 파일이 검색되면, 검색된 순서대로 출력된다.
where 명령은 일반적으로 파일 시스템 안에 있는 파일을 검색하는 데 사용할 수 있다. 예를 들어, 다음 명령은 윈도우 2000 시스템 디렉터리에서(/r) que로 시작하는 모든 파일의 크기와 수정일(/t)을 보여준다.
C:\> where /r c:\winnt /t que*
1410832 12-07-99 8:00a c:\winnt\system32\dllcache\query.dll
10512 12-07-99 8:00a c:\winnt\system32\dllcache\query.exe
1410832 12-07-99 8:00a c:\winnt\system32\query.dll
10512 12-07-99 8:00a c:\winnt\system32\query.exe
|
이 모드에서 where는 디폴트 모드에서 forfiles 명령과 비슷한 기능을 수행한다.
유닉스에서 which와 find 명령이 이와 비슷하다.
에일린 프리쉬는 20년 넘게 시스템 관리자로 일해왔다. 최근 그녀는 윈도우 NT나 유닉스 시스템에 관심을 갖고 있다. 저서로는
윈도우 NT 시스템 관리의 핵심,
시스템 관리의 핵심 등이 있다.