Linux & Unix2009. 11. 21. 13:34

본문스크랩 [스크랩] LPIC Level 1의 48가지 팁 LINUX

2007/09/28 17:34

작성자: 베레(lsj403)

복사 http://blog.naver.com/lsj403/memo/77721995

출처 가지 못할 길은 없다. | 눈곰이
원문 http://blog.naver.com/snowbear/50019664077
1. 텍스트 파일 전체를 가장 손쉽게 보려면 cat명령어를 이용한다. (반대로 명령하려면 tac를 사용한다.) 페이지의 상단만 보고 싶다면 head 명령어를 하단만 보고 싶다면 tail 명령어를 사용하면 된다.
2. cut 명령어는 파일에서 항목을 불러내서 paste나 join 명령어로 항목을 결합시킬 수 있다. join이 paste보다 더 많은 특성을 제공하는데 적절히 paste나 join을 사용하면 된다.
3. expand 명령어는 tab(탭)을 빈 공간으로 바꿀 수 있다. 이에 반해 fmt 명령어는 텍스트의 행을 문자에 맞춰서 정령해 주며, pr 명령어는 페이지의 길이를 정렬해 준다. nl명령어는 순차적으로 행을 보여주며, sort는 -n 매개변수를 사용하여 알파멧순이나 숫자순으로 항목을 정렬해 준다.
4. od 명령어는 텍스트가 아닌 파일을 8진 덤프(octal dump)로 나타낸다. tr은 특수 문자를 다른 문자로 변환하며, wc는 파일 내의 행, 단어, 문자의 수를 센다.
5. cp는 파일을 복사하라는 명령어이고, mv는 파일을 옮기라는 명령어이다. rm은 삭제할 때 사용하는데 mkdir으로 생성된 디렉토리를 삭제할 경우에는 rmdir 명령어를 사용한다. 이러한 명령어를 사용할 때는 절대 주소지정이나 상대 주소지정, 그리고 와일드카드를 이용해 타겟이나 소스 항목을 명확히 해줘야 한다. 디렉토리를 변경하려면 cd명령어를 사용하고(단, 매개 변수를 지정해 주지 않으면, 홈 디렉토리로 이동하게 된다.) 현재 작업 중인 디렉토리를 확인하려면 pwd(present working directory:현재 작업중인 디렉토리) 명령어를 사용한다.
6. 일반적으로 표준 입력(stdin)은 키보드에서 그리고 표준 출력(stdout)은 모니터에서 읽는다. stdin과 stdout은 표준에러(stderr)와 마찬가지로 리다이렉트(방향 재지정)할 수 있다. 리다이렉션할 때에는 >,>>,<,| 와 같은 심볼을 사용한다. 출력을 여러곳으로 보낼 때에는 tee명령어를 사용하면 된다.
7. 명령어와 명령행은 세미콜론으로 연결하는데, 각 명령은 서로 독립적으로 작용한다.명령어에는 히스토리 기능이 있어서 한번 입력한 명령어는 재입력할 필요가 없으며, 이전에 편집해 놓은 것을 실행할 수 있다. 모든 명령어는 실행할 때 최소 하나의 프로세스를 거치는데, 이러한 프로세스는 ps나 top 명령어(계속해서 디스플레이를 업데이트한다.)로 볼 수 있다.
8. 작업을 포그라운드(foreground)에서 다시 실행하려면 ^Z를 눌러 작업을 중지하면 된다. 작업을 백그라운드로 돌리려면 bg를 백그라운드에서 실행되고 있는 작업을 포그라운드로 올리려면 fg를 이용한다. 진행중인 작업은 jobs 로 그 목록을 볼 수 있으며, 프로세스를 죽일때에는 kill명령어를 이용한다.
9. 우선순위(priority)가 있는 작업을 시작하기 전에 nice 명령어를 이용하면 낮은 우선순위의 백그라운드 프로세스를 실행할 수 있다. 하지만 작업이 시작되었다면 renice명령어만이 우선순위를 변경할 수 있다.
10. sed 편집기는 정의된 매개 변수를 사용해서 텍스트를 디스플레이한다. grep 유틸리티(grep과 유사한 기능을 하는 egrep,fgrep도 마찬가지)는 파일 내에서 특정 문자열을 찾는다. 장치, 리눅스 파일 시스템, 파일시스템 계층 표준
11. fdisk 명령어는 파티션에 사용하는데, 파티션 후엔 mkfs를 사용해서 포멧할 수도 있다. mkfs 유틸리티는 msdos를 비롯해 수많은 파일시스템 형식을 포멧할 수 있게 해준다.
12. 파일시스템은 저장된 모든 엔티티에 대한 inode(아이노드: 고유 엔트리)를 가진다. 이 inode(ls -i 명령어로 번호를 볼 수 있다.)는 생성/접근/수정(이는 touch 명령어로 변경할 수 있다.)에 대한 허가, 소유자, 멤버, 그리고 관련 날짜 등의 엔티티에 관한 정보를 담고 있다.
13. du 명령어는 디스크가 얼마나 사용되었는지를 보여주는 명령어이고, df명령어는 빈 공간이 얼마나 남았는지를 보여주는 명령어이다. 디스크와 관련된 문제를 가장 잘 해결 할 수 있는 명령어는 fsck로, inode를 포함한 파일시스템을 검사한다.
14. 루트 파일시스템은 항상 장착돼 있어야 하지만, 원격 파일시스템은 mount로 장착하거나, unmount로 철거될 수 있다. 부팅시 자동으로 장착시키려면 엔트리를 /etc/fstab에 덧붙이면 된다.
15. quatas는 사용자나 그룹이 이용할 수 있는 디스크의 여유공간을 제한한다. quatas는 quata 명령어로 초기 설정되며, quotaon과 qoutaoff로 조절할 수 있다. quotaon과 quotaoff는 edqouta로 변경/수정되며, 리포트는 repqouta로 생성된다.
16. 파일 퍼미션은 심볼이나 숫자 모드로 표현한다. 처음 파일을 생성했을 때, 디폴트 퍼미션은 666에서 umask값을 뺀 수치이다. 디렉토리에 대한 디폴트 퍼미션은 777에서 umask 값을 빼면 된다. 수치에 대한 퍼미션을 계산하면 읽기는 4. 쓰기는 2, 그리고 실행은 1의 값에 해당한다.
17. 파일 및 디렉토리 퍼미션은 chmod명령어로 바꿀 수 있다.(chmod는 숫자 모드나 심볼을 이용한다.) 모드 1000은 "스티키 비트"를 설정하고, 모드 2000은 SGID 퍼미션을, 4000은 SUID 퍼미션을 설정한다.
18. chown 명령어는 그룹의 소유자를 변경하며, chgrp 명령어는 파일의 소속 그룹을 변경한다.
19. 링크는 ln명령어로 생성한다. "하드" 링크는 파일에 대한 앨리어스(alias)로, 모든 앨리어스는 공통 inode를 공유한다. 심볼릭(소프트) 링크는 ln -s로 생성하는데, 자신의 inode가 있는 실제 파일(아주 크기가 작음)이다. 심볼릭 링크는 원 파일에 대한 포인터를 가지고 있으며, (하드링크와 달리) 파일시스템에 관계없이 작동한다.
20. 리눅스를 설치하는 과정에서 디폴트값에 의해 수많은 디렉토리가 생성된다. 이 때 생성되는 디렉토리에는 다음과 같은 것이 있다.
 /bin - 모든 사용자가 접근할 수 있는 2진(실행가능)파일이 포함된 디렉토리
 /dev - 디바이스 정의가 포함된 디렉토리
 /etc - 컴퓨터에 따라 달라지는 파일(설정 파일)을 포함한 디렉토리
 /home - 사용자의 홈 디렉토리가 포함된 디렉토리
 /mnt - mount 포인트가 포함된 디렉토리
 /root - 루트 사용자에 대한 홈 디렉토리
 /tmp - 재부팅시 필요 없는 임시 파일을 포함한 디렉토리
 /usr - 자주 바뀌지 않는 문서나 다른 엔트리를 포함한 디렉토리, 하위디렉토리에는 실행 가능한 엔트리가 들어 있다.
 /var - 로그 파일이나 스플처럼 변경된 자료가 보존되는 디렉토리
21. find 명령어는 기준에 달하는 파일/디렉토리에 대한 시스템을 검색하는데 사용한다. 시스템을 별견하면, xargs명령어가(grep과 마찬가지로) 다른 값에 대한 엔티티 내에서 더 자세하게 검색한다.
22. which 명령어는 주어진 이름으로, 경로 지정을 통해 움직이는 첫 번째 실행가능 파일을 찾는다. locate 명령어는 locatedb 데이터베이스에서 엔트리를 찾으며, 사용자의 시스템에 있는 파일을 찾게 해 준다. 이 데이터베이스는 updatedb명령어로 업데이트하면 된다.(updatedb는 /etc/updatedb.conf 파일을 통해 자동으로 설정된다.) 부트, 초기설정, 셧다운, 실행 레벨
23. 리눅스 로더(lilo)는 시스템을 부팅할 때 사용하며, 어떤 운영체제로 부팅할 것인가 선택할 수 있다. /etc/lilo.conf 파일로 lilo를 설정하며, /etc/conf.modules나 /etc/modules.conf과 같은 부가적인 모듈을 로드할 수 있다.
24. "시스템" 로그 파일은 /var/log/messages이며, 이 파일에 시스템 로그 데몬(syslogd)으로 대부분의 이벤트가 남겨진다. 특히 lilo와 관련된 메시지는 dmesg명령어로 불 수 있다.
25. 초기 데몬은 특정 실행레벨의 데몬을 알맞게 운영한다. 이 시스템은 부팅시 /etc/inittab 파일의 디폴트로 지정된 실생레벨로 맞추려고 한다.
26. 실행레벨은 init과 shutdown(half라고도 한다.)으로 변경한다. 유효한 표준 실행레벨은 다음과 같다:
 0 - 시스템을 중단한다.
 1 - 시스템을 단일 사용자 모드로 전환한다.
 2 - 네트워킹이 지원되지 않는 다중 사용자 모드
 3 - 네트워킹이 지원되는 다중 사용자 모드
 5 - X 윈도우 환경
 6 - 시스템을 재부팅한다.
27. 메뉴얼 파일은 대부분 표준 유틸리티용이며, man명령어로 읽는다. more나 less, 혹은 PAGER 변수로 정의된 비슷한 유틸리티를 이용해서, 한번에 스크린에 볼 수 있는 페이지를 조절한다.
28. /usr/man 하위에는 많은 서브디렉토리가 있는데, 이러한 /usr/man 에는 메뉴얼 페이지가 있다. 가장 중요한 것들은 다음과 같다:
 /man1 - 셀 유틸리티와 사용자 명령어를 정의해 놓았다.
 /man2 - 시스템 호출에 대한 페이지가 있다.
 /man3 - libc 호출
 /man4 - 디바이스 설명
 /man5 - /etc 하위에 있는 파일을 비롯한 설정 파일 설명
 /man6 - 게임에 대한 메뉴얼 페이지
 /man7 - 리눅스 시스템 파일과 관습
 /man8 - 관리 유틸리티 정의
29. 첫번째 디렉토리가 아닌 다른 디렉토리에서 메뉴얼 페이지를 보려면, man 명령어 뒤에 서브디렉토리의 숫자를 입력해 주면 된다. 예를 들면 man 2 nice처럼 하면된다.
30. 다른 소프트웨어는 /user/doc 디렉토리에 문서를 작성해야 한다. 유틸리티의 이름으로 하위 디렉토리를 만들어, 하이픈과 버전 넘버를 표시한다.
31. whatis 명령어로 엔트리에서 사용 가능한 메뉴얼 페이지를 불 수 있으며, whereis 명령어는 메뉴얼 페이지를 비롯하여 파일의 위치와 모든 관련 파일을 볼 수 있다.
32. 표준 유틸리티에서는 실행가능한 파일 이름 뒤에 "--help"를 입력해서 구문에 대한 정보만을 볼 수 있다. info 명령어로 /usr/info 하위에 있는 help 파일을 볼 수 있다.
33. 인터넷 사이트 Linux Documentation Project나 다른 개인적인 벤더 사이트에서 관련 문서를 많이 찾을 수 있다. 뉴스 그룹이나 메일링 리스트를 구독함으로써 문제를 해결하는 데에 도움을 받을 수도 있다.
34. 시스템과 문서에 대한 모든 변경 사항과 모든 사용자가 이용 가능한 지원 형식을 기록해야 한다.
35. 사용자가 시스템에 접근하려면 사용자명과 패스워드가 필요하다. 사용자명은 /etc/passwd/ 파일에 첫 번째 필드로 저장되어 있다. 이 파일의 다른 필드는 다음과 같다:
 second - /etc/shadow로 옮겨 놓지 않았다면, 이곳에는 사용자의 패스워드가 있다.
 third - 사용자의 고유한 ID이다. 루트 유저(root user)는 항상 0번이고, 시스템 계정은 전형적으로 번호가 작다. 표준 사용자는 대게 500에서 시작했다.
 fouth - 그룹 ID이다. 루트 그룹(root group)은 0번이고, 시스템 그룹(system group)은 번호가 작다.
 fifth - finger 명령어나 다른 유사한 유틸리티에서 반환되는 사용자 정보가 있다.
 sixth - 사용자의 홈 디렉토리
 seventh - 사용자의 셸, 이 디렉토리에 아무 것도 없으면ㅡ 디폴트 셸이 적용된다.
36. 패스워드는 보안을 더 철저히 하기 위해 /etc/shadow 파일로 옮기는 것이 낫다.(이 때, pwconv 유틸리티를 사용하며, 반대로 하려면 pwunconv를 사용한다.) 실생되면 /etc/passwd 파일의 두 번째 필드에 "x"가 나타난다. passwd로 패스워드를 변경한다.
37. 수동으로 설정 파일을 편집하거나 useradd 명령어로 사용자들 추가할 수 잇다.(userdel로 사용자를 삭제한다.) 사용자를 추가하면, 홈 디렉토리를 생성해서 여기에 /user/skel에 있는 임시 파일을 복사하게 된다.
38. 그룹 정의는 /etc/group 파일에 있다. 패스워드는 그룹 정의와 함께 /etc/group에 있거나, 보안을 위해 /etc/gshadow에 옮길 수 있다.(이 때 grpconv 유틸리티를 사용한다. 반대로 하려면 grpunconv를 사용한다.) groupadd유틸리티는 수동으로 설정 파일을 편집하지 않고도 그룹을 만들 수 있다. groupdel은 그룹을 지우는 데 사용한다. 그룹을 수정하려면 groupmod를, 사용자를 다른 그룹으로 옮기려면 newgrp 명령어를 사용한다.
39. /etc/profile 파일에는 모든 사용자에 적용하려는 변수가 있다. 사용자 로그인 파일은 홈 디렉토리 하위의 개인적인 .profile 파일로 가기 전에 작동되어 환경을 설정한다. 개별 사용자가 시스템에 마지막으로 로그인한 시간을 보려면 lastlog명령어를 사용하면 되는데, 이 명령어는lastlog파일에서 데이터를 뽑아낸다. last명령어로 가장 최근에 누가 로그인 했는지 알 수 있고, who 명령어로는 마지막 접속자가 지금도 로그인 상태인지 알 수 있다.
40. 시스템 로그 데몬(syslogd)은 로그 파일에 대부분의 이벤트를 로그하는데, 이 때 /var/log/messages라는 메인 파일을 생성한다.logratate명령어는 자동으로 이러한 로그를 저장하도록 설정하며, /etc/syslog.conf 파일에 설정된 유지보수를 수행한다. 로그 파일에 수동으로 엔트리를 작성하려면, logger 명령어를 사용한다.
41. 작업을 한 번만 부재 모드(unattended mode)로 구동하도록 예약하려면 at명령어를 사용한다. 설정한 작업을 보려면 atq명령어를, 이전에 실행한 작업을 지우려면 atrm 명령어를 사용한다.
42. at, allow 파일을 생성하여 유효한 사용자만 입력하여 at 서비스(atd)를 사용할 수 있는 사람을 제한할 수 있다. at, deny 파일을 생성하여 서비스를 사용할 수 없는 사용자면 입력하면 반대로 된다. 즉 파일에 이름이 있는 사용자를 제외하고 모두 그 서비스를 사용할 수 있다.
43. 부재 작업(unattend job)을 예약해서 일정한 간격으로 프로그램을 구동하려면, crontab(cron table) 엔트리를 만든다. crontab 파일은 cron service로 읽는데, cron service는 어떤 작업이 구동되어야 하는지 항상 감시한다.
44. cron, allow 파일을 만들어 유효한 사용자를 입력하여 cron을 사용할 수 있는 사람을 제한할 수 있다. cron, deny 파일을 만들어 서비스를 사용할 수 없는 사용자명만 입력하면 반대로 된다. 즉 파일에 이름이 있는 사용자를 제외하고 모두 그 서비스를 사용할 수 있다.
45. cron table의 각각의 엔트리에는 여섯 필드가 있다:
 몇 분에 작업을 실행하는가(0-59)
 몇 시에 작업을 실행하는가(0-23)
 일(1-31)
 달(1-12)
 주(0-6, 0은 일요일)
 실행할 작업의 경로
46. 데이터가 손상될 경우를 대비하여 데이터는 백업(backup)되어야 한다. 백업은 tar 명령어(여러개의 파일을 하나의 아카이브에 결합시킴)나, 파일을 매체 사이에서 복사하는 cpio 명령어를 사용한다.
47. compress(반대는 uncompress), gzip(반대는 gunzip), pack(반대는 unpack) 명령어로 파일을 압축할 수도 있다.
48. 전부가 아니라 일부분만 백업할 수도 있다. 만약 일부분만 백업한다면, 그것은 점증적 백업(incremental backup)(마지막으로 전부를 백업하거나 점증적으로 백업을 한 이후의 모든 파일)이거나 차동 백업(differential backup)(마지막으로 전부를 백업한 이후의 모든 것)이 될 것이다. 차동 백업과 점증적 백업을 같이 사용할 수는 없으므로, 둘 중 한 가지만 선택적으로 사용해야 한다.
Posted by Tiwaz