|
ulimit 시스템 리소스에 대해서 최대 한계(upper limit)를 지정해 줍니다. 보통 -f 옵션을 써서 쉘이 만들 수 있는 파일 크기를 제한 시킵니다(ulimit -f 1000 이라고 하면 파일 크기를 1 메가로 잡아 줍니다). -t 옵션은 코어덤프 파일의 크기를 제한 시킵니다(ulimit -c 0 이라고 하면 코어덤프를 생성시키지 않습니다). ulimit 값은 보통, /etc/profile이나 ~/.bash_profile에서 지정해 줍니다(27장 참고).
umask 사용자(User) 파일 생성 마스크(MASK). 사용자 각자의 기본 파일 속성을 제한해 줍니다. 사용자가 생성하는 모든 파일은 umask로 지정된 속성의 영향을 받습니다. umask로 넘겨준 값은 해당 파일 소유권을 꺼버립니다. 예를 들어, umask 022 는 새로 만들어 지는 파일이 최소한 755 소유권을 갖도록 해 줍니다(777 NAND 022). [6] 사용자는 당연히 나중에 그 파일의 속성을 chmod로 바꿀 수 있습니다. 보통 umask 값을 설정할 때는 /etc/profile이나 ~/.bash_profile에서 합니다(27장 참고).
rdev 루트 디바이스, 스왑 영역, 비디오 모드에 대한 정보를 얻거나 변경. rdev의 기능은 lilo로 넘어갔지만 아직 램 디스크를 설정할 때는 유용합니다. 역시 잘못 쓰면 위험한 명령어입니다.
lsmod 설치된 커널 모듈을 보여줍니다.
bash$ lsmod Module Size Used by autofs 9456 2 (autoclean) opl3 11376 0 serial_cs 5456 0 (unused) sb 34752 0 uart401 6384 0 [sb] sound 58368 0 [opl3 sb uart401] soundlow 464 0 [sound] soundcore 2800 6 [sb sound] ds 6448 2 [serial_cs] i82365 22928 2 pcmcia_core 45984 0 [serial_cs ds i82365] |
insmod 커널 모듈을 강제로 올립니다. 루트로 실행해야 합니다.
modprobe 보통 시스템 구동 스크립트에서 자동으로 불리는 모듈 로더.
depmod 모듈간 의존 파일을 만들어 줍니다. 보통 시스템 구동 스크립트에서 불립니다.
env 현재의 환경 변수, 혹은 그 값을 바꿔 프로그램이나 스크립트를 실행 시킵니다(시스템 전체 환경은 건드리지 않습니다). [varname=xxx] 옵션을 주면 스크립트가 실행될 동안에만 환경 변수 varname의 값을 바꿔줍니다. 아무 옵션도 안 주면 현재 세팅되어 있는 모든 환경 변수를 보여줍니다.
참고: Bash나 본쉘에서 파생된 다른 쉘들에서는 단일 명령어 환경에서 변수를 설정하는 것이 가능합니다. var1=value1 var2=value2 commandXXX # 'commandXXX' 의 환경에서만 $var1 과 $var2 를 설정. |
작은 정보: 스크립트의 첫번째 줄("#!"가 있는 줄)에 env를 써서 경로를 모르는 쉘이나 명령어 해석기를 지정해 줄 수도 있습니다.
#! /usr/bin/env perl
print "펄이 어디에 있는지 몰라도\n"; print "이 펄 스크립트는 잘 동작할 것입니다.\n";
# 펄 실행 파일이 원하는 곳에 없을 수도 있기 때문에 # 이식성 있는 크로스 플랫폼용 스크립트에 아주 좋습니다. |
ldd 실행 파일에 필요한 공유 라이브러리를 보여줍니다.
bash$ ldd /bin/ls[/color][/b] libc.so.6 => /lib/libc.so.6 (0x4000c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) |
strip 실행 가능한 바이너리 파일에서 디버깅용 심볼릭 참조 정보를 제거해 줍니다. 이 명령어를 쓰면 실행 파일의 크기는 작아지지만 디버깅은 할 수가 없습니다.
주로 Makefile에서나 나오고 쉘 스크립트에서는 잘 쓰이지 않습니다.
nm strip 되지 않은 컴파일된 바이너리에 들어 있는 심볼들을 보여줍니다.
rdist 리모트 분산 클라이언트: 리모트 서버에 있는 파일 시스템으로 동기화, 복사, 백업을 해 줍니다.
지금까지 배운 관리자용 명령어들에 대한 지식을 가지고 시스템 스크립트를 살펴 보도록 하겠습니다. killall은 시스템 셧다운시에, 돌고 있는 프로세스를 멈추게 해 주는 프로세스로서, 짧으면서도 이해하기 쉬운 스크립트중의 하나입니다. 예 13-8. killall, /etc/rc .d/init.d 에서 인용
#!/bin/sh
# --> "# -->" 표시는 본 문서의 저자가 붙인 주석입니다.
# --> 여기서 소개하는 부분은 # --> Miquel van Smoorenburg(<miquels@drinkel.nl.mugnet.org>)의 # --> 'rc' 스크립트 패키지중의 일부입니다.
# --> 이 스크립트는 레드햇 전용 스크립트인 것처럼 보이기 때문에 # --> 다른 배포판에는 없을 수도 있습니다.
# 쓰이지 않으면서 실행중인 모든 서비스를 죽입니다(실제로 실행중인지를 # 확실히 확인하기 때문에 아무 서비스도 안 죽일 수 있습니다).
for i in /var/lock/subsys/*; do # --> 표준 for/in 루프이나 "do" 가 같은 줄에 있기 때문에 # --> ";" 를 붙여줘야 됩니다. # 스크립트가 실제로 있는지 확인. [ ! -f $i ] && continue # --> "and list"를 아주 잘 썼습니다. 다음처럼 해도 똑같습니다. # --> if [ ! -f "$i" ]; then continue
# 서브시스템 이름을 알아냅니다. subsys=${i#/var/lock/subsys/} # --> 변수 이름 매칭인데 여기서는 파일 이름이 되겠죠. # --> subsys=`basename $i` 와 완전히 똑같은 표현입니다.
# --> 잠금 파일의 이름을 알아내는데, 잠금 파일이 있다면 # --> 해당 프로세스가 실행중이라는 증거입니다. # --> 앞에서 설명했던 "lockfile" 을 참고하세요.
# 그 서브시스템을 내립니다. if [ -f /etc/rc.d/init.d/$subsys.init ]; then /etc/rc.d/init.d/$subsys.init stop else /etc/rc.d/init.d/$subsys stop # --> 쉘 내장명령인 'stop'을 써서 돌고 있는 작업과 데몬을 중지시킵니다. fi done |
출 처: 다내꼬님의 리눅스
|