데비안4알릭스 3
(이번 글부터는 명령에는 앞에 $ 를 붙여서 설명하겠습니다. 그러므로 $ 표시가 붙어 있는 것은 터미널의 커맨드 라인에서 명령을 치는 것을 의미하는 것입니다.)
3에 들어가기에 앞서서, VoyageMPD를 기본으로 설치하면 man page 즉 설명 내지는 도움말들이 함께 설치되지 않는군요. 루트 사용자로 로그인하셔서
# apt-get install man
이렇게 하십시요. 지난번에 설명드린 것처럼 서버에서 바로 불러다가 설치할 겁니다.
man 페이지를 보실 때 설명 내용이 길면 여러 페이지에 나뉘어 나옵니다. 다음 페이지를 볼 때는 키보드의 스페이스 키를 누르시고 그만 보시려면 “q” (quit) 를 누르시면 됩니다.
그리고 오늘의 주제는 가장 많이 사용하는 콘솔 명령어 몇 개를 알아보겠습니다.
먼저 ls가 있습니다. ls는 list의 약자로 현재 디렉터리에 있는 파일및 서브디렉터리의 목록을 나열하라는 명령어입니다. 또 ls와 더불어서 많이 사용하게 되는 명령어 cd 가 있습니다. cd는 change directory의 약자로 디렉터리를 바꾸라는 뜻입니다. 사용 방법은
$ cd 목적디렉터리
이렇게 씁니다.
즉 /etc 디렉터리로 가려면
$ cd /etc
또 그 밑에 있는 /etc/init.d 디렉터리로 가려면
$ cd /etc/init.d
이렇게 하면 됩니다.
또는 현재 디렉터리에서 그 밑에 있는 서브 디렉터리로 가려면 그 서브디렉터리의 이름만 적으면 됩니다. 즉 현재 디렉터리가 /etc 인데 /etc/init.d 로 가려면 그냥
$cd init.d -----”1”
이렇게만 하면 됩니다. 하지만 현재 디렉터리가 /etc/ 가 아닌데 /etc/init.d로 가려면
$ cd /etc/init.d ------”2”
하고 모두 적어줘야 합니다.
“1”과 같은 것을 상대경로(relative path)라고 하고 “2”와 같은 것을 절대경로 (absolute path)라고 합니다. 이를 경우에 따라서 적절히 사용하면 좀 더 효율적으로 작업할 수 있습니다.
그리고 현재 디렉터리에서 하나 위의 상위 디렉터리로 가려면
$ cd ../
이렇게 하시면되고
두개 상위 디렉터리로 가시려면
$ cd ../../
이런식으로 사용하시면 됩니다. 세개 네개 상위 디렉터리로 가는 것도 마찬가지 입니다.
자 cd 명령어를 배웠으니
$ cd /etc
한 다음에
$ ls
해 봅시다.
root@voyage:/# ls
CHANGELOG etc opt selinux vmlinuz
README home proc srv voyage.depends.list
README.live-cd initrd.img ro sys voyage.dpkg-l
README.pxe lib root tftpboot voyage.dpkg.list
bin lost+found run tmp
boot media rw usr
dev mnt sbin var
저는 이와 같이 나왔습니다.
여기에서 명령 프람프트에 root@voyage:/#
이렇게 되어 있는 것을 볼 수 있습니다.
이는 현재 사용자가 root이며 현재 사용하고 있는 시스템의 이름은 voyage라는 것을 의미합니다. 다른 사용자로 로그인하면 “다른사용자@voyage:/$” 이런식으로 나올 겁니다.
이는 쉘프로그램인 bash(voyage는 기본 쉘이 bash-born again shell임)를 컴파일할 때 옵션으로 주던가 아니면 각 사용자의 설정에서 정하는 것에 따라서 달라질 수 있는데 이에 대해서는 나중에 다시 설명하겠습니다.
그리고 “#”는 현재 사용자가 root 즉 수퍼유저임을 뜻합니다. 만약 다른 일반 사용자라면 “$”로 표시될 가능성이 높습니다.(쉘에 따라서 다름)
ls 는 가장 많이 사용하는 명령어로 간단하면서도 사실은 굉장히 많은 옵션이 있고 아주 강력하게 사용할 수 있습니다.
$ man ls
하면 사용법과 옵션을 보여줍니다.
ls [OPTION]... [FILE]...
일단은 이렇게 사용하라고 나옵니다.
옵션은 (예를들어 모든 파일을 나열하라는 a 옵션을 사용한다면)
ls -a
이렇게 하시면 현재 디렉터리 내의 모든 파일을 보여줍니다. a 옵션은 숨김파일까지 모두 보여줍니다.
또 ls의 옵션 중 많이 사용하는 것에 l이 있습니다. 이는 long 을 의미하는 것으로 각 파일에 대한 상세한 정보를 보여줍니다.
ls -l
이렇게 하시면 되고요.
두 개의 옵션을 함께 사용할 때는
ls -al
이렇게 붙여서 쓰면 됩니다. a와 l의 순서는 상관없습니다.
그럼 ls해서 나온 결과들을 조금 살펴보죠.
자 다시 확실히 하기 위해서
$cd /etc/
$ls -al
해 보세요
drwxr-xr-x 81 root root 4096 May 20 12:29 .
drwxr-xr-x 25 root root 4096 May 20 12:00 ..
-rw------- 1 root root 0 Jan 3 09:04 .pwd.lock
drwxr-xr-x 5 root root 4096 May 10 15:17 X11
-rw-r--r-- 1 root root 2981 Jan 3 09:04 adduser.conf
-rw-r--r-- 1 root root 10 Jan 3 10:15 adjtime
drwxr-xr-x 2 root root 4096 May 10 15:17 alternatives
drwxr-xr-x 3 root root 4096 Jan 3 10:15 apache2
drwxr-xr-x 7 root root 4096 Jan 3 10:13 apm
drwxr-xr-x 6 root root 4096 May 10 15:12 apt
-rw-r--r-- 1 root root 781 May 20 11:50 auto.master
-rw-r--r-- 1 root root 524 Oct 10 2012 auto.misc
.
.
목록이 너무 길어서 대충 여기서 잘랐습니다.
위는 제 /etc 디렉터리의 파일 목록들입니다.
그 중
drwxr-xr-x 6 root root 4096 May 10 15:12 apt
이것을 갖고 설명드리겠습니다.
제일 앞에 있는 “d”는 디렉터리를 의미합니다.
그 다음 세자리, 첫번째 것에서는 drwxr-xr-x 에서 rwx 부분, 이부분은 소유자의 권한을 보여주는 것으로서 r은 읽기가 허가되었음을, w는 쓰기(수정)가 허가되었음을, x는 실행시킬 수 있음을 보여줍니다. 즉 소유자는 읽기,쓰기, 실행을 할 수 있다는 것입니다. 두번째 세자리 r-x로 되어 있는 부분은 소유자가 속한 그룹들에게 주어진 허가권입니다. 그러니까 소유자가 속한 그룹에는 읽기와 실행 권한만 주어지고 쓰기/수정 권한은 주어지지 않았군요.
그리고 그 다음 6 이라는 숫자는 디렉터리인 경우 그 밑에 있는 서브디렉터리의 숫자입니다. 그리고 그 다음 숫자는 크기, 그리고 그 다음은 마지막 수정된 날짜와 시간, 그리고 제일 마지막에 이름이 있습니다.
어찌보면 VoyageMPD에서는 루트(root= super user)로 로그인하여 모든 작업을 하는 경우가 많기 때문에 위와 같은 소유권과 허가권이 무엇을 의미하는지 크게 느끼지 못하실 수 있습니다. 수퍼유저란 모든 것을 마음대로 할 수 있는 권한을 갖고 있거든요. 하지만 유닉스 계열에서는 소유권과 허가권은 매우 중요하기 때문에 이런 것들이 있다는 것을 알아두시고 나중에 필요하면 다시 찾아 보시면 됩니다.
그 이외에 ls 관련 옵션들은 “man ls”해서 확인하고 사용해보세요. ls 명령어는 시스템에 무엇이 있는지만 확인하고 아무런 영향도 주지 않으므로 마음껏 해봐도 됩니다.
ls 매뉴얼을 확인하시는 중 inode access time 이런 부분들이 사실 유닉스에서는 매우 중요한 옵션들입니다. 특히 크래커들이 시스템을 침입하거나 그랬을 때 확인하는 데 다양하게 사용됩니다만...단지 mpd를 실행하기 위한 시스템엔 그런 염려가 없으니 호기심이 있으신 분들만 확인해 보세요.
그리고 ls 를 포함해서 유닉스에서 사용하는 명령어에는 왜 그렇게도 복잡하게 옵션이 많은지 궁금하실겁니다. 이 옵션들에 대한 처리는 쉘프로그램에서 해주는데 이렇게 다양한 옵션을 잘 사용하여 쉘스크립트란 간단한 실행 스크립트를 만들어서 컴퓨터가 자동으로 어떤 작업을 실행하게 하는데 사용합니다. 제가 나중에 좀더 설명을 많이 한 다음에 mpd를 좀 더 편리하게 사용하기 위한 설정이라든지 그런 것에 대한 예를 들게 되면 이해 하실 수 있을 겁니다.
오늘 마지막으로 드릴 설명은 쉘 프로그램인 bash에서 가장 기본적으로 많은 사람들이 설정하는 것에 대해서 말씀드리겠습니다. 각 사용자의 bash 설정은
/사용자디렉터리/.profile 에 있는 설정에 따라서 하는데 보통은
.profile에 어떤 설정파일을 포함시킬 것인지를 알려주고 일반적으로는 구체적인 설정은 .bashrc 에 적습니다.
일단은 root로 로그인 하셨다 가정하고 root의 bash 설정을 변경하는 것에 대해서 설명드리면
$ vi /root/.bashrc
이렇게 하십시요
또는 취향에 따라서는
$ cd /root
하시고
$ ls
하시면 아무것도 나타나지 않을 겁니다.
다시
$ ls -a
하시면 앞에 “.”이 달린 파일들이 보일 겁니다. .bashrc .profile 등 앞에 아무것도 없이 “.”이 이름 앞에 달린 파일들은 모두 숨김파일입니다. 평소엔 잘 사용하지 않는 파일들이죠, 그래서 꼭 필요할 때만 보이면 되므로 그렇게 해 두는 것입니다.
일단 그 중 .bashrc 파일 만 수정합니다. (말이 수정이지 아주 간단한 변경이니까 겁내지 말고 해보세요.)
$ vi .bashrc
이러게 하시면 (nano 에디터가 더 편리하시면 nano 에디터로 작업하세요. 여기서는 vi로만 설명드리겠습니다.)
----------------------------------------------------------------------
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
alias bc='. /etc/bash_completion'
------------------------------------------------------------------------------
이렇게 보이죠?
거의 모든 행이 # 로 시작할 겁니다. #가 앞에 붙은 것은 comment out 된 것으로 사용자가 참고만 하고 아무런 영향도 주지 않는 것을 지정해 둔 것입니다.코멘트는 매우 다양한 경우에 유용하게 사용할 수 있는데 거기에 대해서 직접 나중에 느끼시고...일단 우리에게 필요한 수정을 먼저...
이 중 중간 쯤
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
이 부분의 코멘트 표시 “#”을 지우세요. vi 명령어에서 한 문자를 지우는 방법은 키보드의 화살표들을 이용해서 해당 위치에 커서를 옮겨 놓은 다음 키보드의 “x” 키를 누르면 됩니다.
그래서 위 행을
export LS_OPTIONS='--color=auto
eval "`dircolors`"'
과 같이 만든 다음에
“:”
를 누르시면 vi 에디터에서 명령 모드로 바뀝니다.
명령모드 상태에서
wq
를 입력하시면 vi 에디터가 수정 내용을 저장하고 편집 작업을 종료합니다.
그런 다음
$ exit
하셔서 로그아웃한 다음 다시 로그인 하시고
$ cd /
$ ls
해 보세요.
리스트들이 컬러로 보이죠?
자 추가로 다시
$ vi /root/.bashrc
해서
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
이 부분에 있는 # 표시들도 모두 없애고 저장합니다.
이것의 의미들은
ls 대신에 ll을 치면 “ls -l”을 한 것으로 인식하라는 것이며 그냥 아주 간단하게 “l”만 치면 “ls -al”을 한 것으로 인식하란 것입니다.
ls를 사용할 때 이 옵션들은 아주 많이 쓰기 때문에 쉽고 빠르게 하기 위한 것이죠.
그리고 아래쪽에
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
이런 부분도 있는데 이는 삭제, 복사, 이동 할 때 확인을 거치게 하여 실수가 발생하는 것을 예방하기 위한 것입니다. 이것은 취향에 따라서 지정하세요. 언제든지 코멘트 표시 #를 지웠다가 마음에 들지 않으면 다시 # 만 앞에 넣어주면 그 행은 무시하게 됩니다.
오늘은 여기까지 하겠습니다.
참 voyagempd는 기본적으로 파일 시스템을 읽기전용으로 마운트 합니다. 이는 cf 메모리카드에 설치된 파일시스템이 망가지는 것을 방지 하기 위한 것입니다. 그래서 어떤 작업이든 수정한 것이 시스템에 저장되게 하려면
# remountrw
즉 읽기/쓰기 모두 가능 모드로 파일시스템을 다시 마운트하여야 합니다.
일부 사용자분들은 로그인하면 바로 remountrw 명령어주는 것을 습관화하시기도 하더군요.
여기에 대해서 간단히 설명드리겠습니다.
어떤 파일 시스템이든 파일이 열려 있는 상태에서 또는 어떤 다른 작업을 하고 있는 상태에서 그냥 시스템의 전원이 꺼져버리면 파일시스템이 망가질 수 있습니다. 그래서 모든 운영시스템은 적절한 종료 과정을 거치게 되어 있습니다. 하지만 알릭스 컴퓨터는 초소형 시스템으로 전원 버튼 마져 없습니다. 그렇기 때문에 사실 항상 켜 놓는 것이 부팅 시간 낭비 방지 및 음질에도 좋은데 전기 요금이 아까우신 분들은 전원 끄기를 원하십니다.
이런 저런 이유로 알릭스의 전원을 끌 때는 그냥 끄지 마시고
# shutdown -h now
하고 명령을 내리세요.
shutdown이란 시스템을 종료하란 뜻이고 -h 는 옵션으로서 halt- 멈춤 즉 시스템종료후에 전원을 꺼버리란 뜻이며 now는 당장(장기하 노래가 “아 당장 실행해~” 이렇게 들리네요..) 이란 뜻입니다.
다른 옵션으로 다양한 종료작업을 할 수도 있습니다.
# shutdown -r 1000
이렇게 하면 1000초가 흐른 다음에 r 즉 재부팅 하란 뜻입니다.
그래서 알릭스를 끄실 때는 그냥 전원선을 팍 뽑아 버리지 마시고
# shutdown -h now
하시면 각종 종료 과정 거치는게 보입니다. 그런뒤 ssh가 종료되면 터미널 연결 프로그램의 연결이 끊어지고....한 몇 초쯤 더 지나면 시스템이 완전히 종료되는데 알릭스는 전원을 시스템에서 직접 관리하는 부분이 없으므로 그 후에 전원선을 뽑으시면 안전합니다.
이렇게 사용하시는데 익숙해지시면 파일 시스템 마운트를 읽기 전용 모드로 하지 않고 일반적인 읽기/쓰기 모두 가능한 모드로 마운트해서 사용해도 됩니다.
오늘을 이상입니다.
데비안4알릭스 3편 끝~
|