2018년 3월 2일 금요일

우분투 운영체계 폴더 구조 및 핵심 명령어

이 글은 우분투 운영체계 폴더 구조 및 명령어를 정리한다.

폴더 구조 
우분투 폴더 구조는 다음과 같다.
우분투 파일 구조(Ask Ubuntu)

우분투는 리눅스 일종으로 리눅스 폴더 파일 시스템표준 FSSTND(Linux File System Standard)을 따른다.

/
루트. 최상위 폴더

/bin
기본적인 명령어가 저장된 폴더.

/boot
리눅스 부트로더(Boot Loader)가 존재하는 폴더. 즉, GRUB 과 같은 부트로더에 관한 파일들(grub.conf 등)이 존재

/dev
시스템 디바이스(device)파일을 저장하고 있는 폴더.

/etc
시스템의 설정파일이 존재하는 폴더.
/etc/sysconfig 시스템 제어판용 설정파일
/etc/passwd 사용자관리 설정파일
/etc/named.conf DNS 설정파일

/etc/mai/
sendmail.cf 나 access 파일등의 sendmail 의 설정파일들이 존재하는 폴더.

/etc/ssh/
SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일들이 존재하는 폴더.

/etc/skel/
계정사용자 생성시의 초기화파일들이 저장된 폴더(useradd 에서 사용함)

/etc/rc.d/
부팅레벨별 부팅스크립트파일들이 존재하는 폴더.

/etc/rc.d/init.d/
시스템 초기화 파일들의 실제파일들이 존재함. /etc/pam.d/

/etc/xinetd.d/
xinetd 수퍼데몬에 의해 서비스되는 서비스설정파일이 존재함.

/home
사용자의 홈폴더

/lib
커널모듈파일과 라이브러리파일

/media
DVD, CD-ROM, USB 등과 같은 탈부착이 가능한 장치들의 마운트포인트로 사용되는 폴더.

/mnt
/media 폴더와 비슷한 용도로 탈부착이 가능한 장치들에 대하여 일시적인 마운트포인트로 사용하는 폴더.

/proc
가상파일시스템. 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳

/root
시스템 최고관리자인 root 사용자의 개인 홈폴더.

/sbin
ifconfig, e2fsck, ethtool, halt 등과 같이 주로 시스템 관리자들이 사용하는 시스템관리자용 명령어를 저장하고 있는 폴더.

/tmp
공용폴더

/usr
시스템이 아닌 일반사용자들이 주로 사용하는 폴더

/usr/bin/
일반 사용자들이 사용가능한 명령어 파일들이 존재하는 폴더.

/usr/X11R6/
X 윈도우 시스템의 루트 폴더

/usr/local/
MySQL, Apache, PHP 등과 같은 어플리케이션들을 소스로 컨파일설치할 때 사용되는 장소

/var
시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 폴더

/lost+found
연결이 끊어진 inode 들이 숫자파일형태로 존재하는 곳

명령어 
주로 잘 사용하지 않는 명령어지만, 문제가 있었을 때 사용해야하는 명령어를 정리해 본다.
  • ps: 프로세스 리스트
  • df -h: 디스크 마운트 정보 확인
  • alias: 명령어 간소화하기
  • apropos: 관련된 명령어 찾기
  • arch: 컴퓨터 종류 알기
  • arp: 같은 서브넷의 IP 보여주기
  • at: 작업 시간 정하기
  • atd: 계획성 있는 작업 실행하기
  • awk: 특정 패턴 문자 처리하기
  • a2p: 펄 파일로 바꾸기
  • badblocks: 배드 블럭 검사하기
  • bc: 계산기
  • biff: 메일 수신 소리로 확인하기
  • bg: 후면작업; 배경화면 설정
  • bind: 키나 함수 순서 결합하기
  • break: 루프 빠져나가기
  • cal: 달력보기
  • builtin: 내부 명령어 알아보기
  • case: 조건 처리하기
  • cat: 화면상에서 파일 보기
  • cd: 디렉토리 변경하기
  • cfdisk: 디스크 설정하기
  • chattr: 파일 속성 변경하기
  • chfn: 사용자 정보 변경하기
  • chgrp: 파일, 디렉토리가 속했던 그룹 바꾸기
  • chmod: 파일 권한 바꾸기
  • chown: 파일 주인 바꾸기
  • chsh: 지정된 셸 바꾸기
  • cksum: CRC값을 점검한다
  • clear: 화면 청소하기
  • clock: CMOS 시각을 조정하기
  • cmp: 파일 비교하기
  • colcrt: 문자 변환 필터
  • colrm: 열 삭제하기
  • column: 가로 정렬하기
  • comm: 파일 비교 출력하기
  • command: 명령어 알아보기
  • continue: 루프 계속돌기
  • cp: 파일 복사하기
  • cpio: 복사본 만들기
  • crontab: cron을 관리한다
  • csplit: 파일에 서식, 규칙 정하기
  • cut: 필요한 필드만 출력하기
  • date: 날짜 보기
  • dd: 블럭장치 읽고 쓰기
  • debugfs: ext2 파일 시스템 디버깅하기
  • declare: 변수 선언하기
  • df: 파일 시스템의 사용량 보기
  • dirs: 디렉토리 목록 표시하기
  • dmesg: 부팅 메시지 보기
  • : X윈도우 환경에서 printk 메세지를 기본으로 못보는데 dmesg를 통해서 확인할수 있다
  • dnsdomainname: DNS 이름 출력
  • domainname: NIS 이름 출력&설정
  • du: 디렉토리와 파일의 용량 파악하기
  • dumpe2fs: 파일 시스템 정보 보기
  • echo: 표준 출력하기
  • eject: 장치 해제하기
  • elm: 메일 관련
  • enable: 내부 명령어 지정
  • env: 환경변수 출력하기
  • eval: 인수 읽기
  • exec: 셸 명령어 실행하기
  • exit: 종료하기
  • expand: 탭을 공백으로 변환하기
  • export: 변수 지정하기
  • e2fsck: 파일 시스템 복구하기
  • fc: 지정된 편집기 받기
  • fdformat: 플로피 디스크 포맷하기
  • fdisk: 파티션 나누기
  • fg: 지정된 작업을 전면 프로세스로 시작하기
  • file: 파일 종류 보기
  • find: 파일 찾기 eg) find ./ -name ./*
  • finger: 사용자 정보 알기
  • fold: 정형화하기
  • fmt: 정형화하기
  • for: 반복 실행하기
  • free: 메모리 사용량 알아보기
  • fsck: 파일 시스템 검사하기
  • fstab: 파일 시스템에 대한 고정적인 정보 저장하기
  • ftp: 파일 전송 프로그램
  • fuser: 프로세스 ID 출력
  • getkeycodes: 매핑 테이블 출력하기
  • grep: 특정 문자: 열 검색하기
  • gzexe: 실행 파일 압축하기
  • gzip: 압축하기
  • halt: 시스템 종료하기
  • hash: 기억해 두기; index 역할
  • head: 파일의 앞부분 출력하기
  • help: 도움말 보여주기
  • host: 호스트 정보 보기
  • history: 사용 명령어 목록보기
  • hostname: 서버 이름 알기
  • id: 계정 정보 알기
  • if: 조건문 실행하기
  • ifconfig: 랜카드에 주소 할당하기
  • imolamod: 모듈 설치하기
  • inetd: 인터넷 서비스의 최상위 데몬
  • init: 실행 단계 정하기
  • ispell: 철자법 검사하기
  • jobs: 수행중인 프로세스 알기
  • kbd_mode: 키보드 모드 출력하기
  • kill: 프로세스 죽이기  강제종료 : kill -9  PID
  • klogd: 커널 로그 데몬
  • ldd: 공유 라이브러리의 의존성 알기
  • less: 페이지 단위로 출력하기
  • let: 정규식 표현하기
  • lilo: 부팅하기
  • ln: 링크하기
  • locate: 패턴에 맞는 파일 찾기
  • login: 로그인하기
  • logger: 시스템 로그 기록하기
  • logname: 사용자 로그인명 보여주기
  • logout: 로그인 셸 종료하기
  • look: 특정 단어 검색하기
  • losetup: 중복 장치 확인하기
  • lpd: 프린트 데몬
  • lpq: 현재 프린트 작업 상태 출력하기
  • lpr: 출력하기
  • lprm: 대기열에 있는 문서 삭제하기
  • ls: 디렉토리 내용보기
  • ls -l | grep ^- | wc -l 폴더내 파일갯수 세기
  • lsattr: 파일 시스템의 속성 보여주기
  • lsdev: 하드웨어 장치 출력하기
  • lsmod: 모듈 정보 출력하기 lnsmod: 묘둘 올리기 rmmod : 모듈 내리기
  • mail: 메일 관련
  • make: 컴파일하기
  • man: 매뉴얼 보기
  • mattrib
  • mbadblocks
  • mcd
  • mcopy
  • mdel
  • mdeltree
  • mdir
  • mesg: 메시지를 받을 수 있는지 확인하기
  • mformat
  • minfo
  • mkdir : 디렉토리 만들기
  • mke2fs: 파일 시스템 생성하기
  • mkfs: 파일 시스템 만들기
  • mknod: 특수 파일 만들기
  • mkswap: 스왑 영역 지정하기
  • mlabel
  • mmd
  • mount
  • mmount
  • mmove
  • mpartition
  • mount: 장치 연결하기
  • more: 화면 단위로 출력하기  ls -al | more
  • mrd
  • mren
  • mtoolstest
  • mtype
  • mutt: 메일 관련
  • mv: 파일 옮기기
  • mzip
  • netstat: 현재 네트웍 상황 보기
  • nice: 프로세스 우선 순위 변경하기
  • od: 8진수로 파일 보기
  • passwd: 암호 입력하기
  • pidof: 실행중인 프로그램의 프로세스 ID 찾기
  • pine: 메일 관련
  • ping: 네트웍 확인하기
  • popd: pushd 취소
  • ps: 프로세스 상태 알기 ps -aux
  • pstree: 프로세스 상관관계 알기
  • pwd: 절대경로 보여주기
  • quota: 디스크 한계량 알기
  • rarp: rarp 테이블 관리하기
  • rcp: 원격 호스트에 파일 복사하기
  • rdev: 루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기
  • rdate: 네트웍으로 시간 설정하기
  • reboot: 재부팅하기
  • readonly: 읽기 전용으로 표시하기
  • renice: 프로세스 우선 순위 바꾸기
  • reset: 터미널 초기화하기
  • restore: 다시 저장하기
  • rlogin: 바로 접속하기
  • rm: 파일 지우기
  • rmdir : 디렉토리 지우기 rm -rf
  • route: 라우팅 테이블 추가/삭제하기
  • rpm: 프로그램 추가/삭제
  • rpm2cpio: rpm을 cpio로 변환하기
  • rsh: 원격으로 명령어 실행하기
  • rup: 호스트 상태 출력하기
  • rusers: 호스트에 로그인한 사용자 출력하기
  • rwall: 호스트 사용자에게 메시지 뿌리기
  • script: 기록하기
  • set: 변수값 설정하기
  • setup: 시스템 관련 설정하기
  • showmount: 호스트의 마운트 정보 보여주기
  • shutdown: 전원 끄기
  • sleep: 잠시 쉬기
  • source: 스크립트 번역하기
  • split: 파일 나누기
  • ssh: 암호화된 원격 로그인하기
  • stty: 터미널라인 설정 보여주기
  • su: 계정 바꾸기
  • suspend: 셸 중단하기
  • swapoff : 스왑 해제하기
  • swapon: 스왑 활성화하기
  • sync: 버퍼 재설정하기
  • syslogd: 로그인 과정 설정하기
  • tac: 거꾸로 보기
  • tail: 문서 끝부분 출력하기
  • talk: 이야기하기
  • tar: 파일 묶기
  • tcpdchk: tcp wrapper 설정하기
  • tcpmatch: 네트웍 요청에 대해 예측하기
  • tee: 표준 입력으로부터 표준 출력 만들기
  • telnet: 원격접속하기
  • test: 테스트하기
  • times: 셸에서의 사용자와 시스템 시간 출력하기
  • top: cpu 프로세스 상황 보여주기
  • tr: 문자열 바꿔주기
  • true: 종료 코드 리턴하기
  • type: 유형 보기
  • ul: 밑줄 처리해서 보여주기
  • ulimit: 제한하기
  • umask: 매스크 모드 설정하기
  • umount: 장치 해제하기
  • unalias: 별명 제거하기
  • uname: 시스템 정보 보기
  • unexpand: 공백 문자를 탭으로 변환하기
  • uniq: 중복된 문장 찾기
  • useradd: 사용자 계정 만들기
  • userdel: 계정 삭제하기
  • usermod: 사용자 계정정보 수정하기
  • unset: 설정 변수 해제
  • uptime: 시스템 부하 평균 보여주기
  • users: 로그인된 사용자 보여주기
  • w: 시스템에 접속한 사용자 상황 알아보기
  • wait: 프로세스 기다리기
  • wall: 모든 사용자에게 메시지 보내기
  • wc: 문자, 단어, 라인수 세기
  • whatis: 명령어의 간단한 설명보기
  • while: 루프 명령어
  • who: 사용자 알기
  • write: 콘솔 상에서 간단한 메시지 보내기
  • xcopy: 반복적으로 복사하기
  • XFree86
  • ypchfn: NIS에서 사용하는 chfn 명령어
  • ypchsh: NIS에서 사용하는 chsh 명령어
  • yppasswd: NIS에서 사용하는 passwd 명령어
  • zcat: 압축 파일 보기
  • zcmp: 압축 파일 비교하기
  • zforce: 강제로 gz 만들기
  • zgrep: 압축 상태에서 grep 실행하기
  • zmore: 압축 상태에서 more 실행하기
  • znew: .Z 파일을 .gz로 다시 압축하기
레퍼런스

우분투 백업 및 스냅샷 만들기 방법 소개

이 글은 우분투 백업 및 스냅샷 만드는 방법을 소개한다.

여기서 백업은 user 폴더 밑에 데이터를 보관하는 것을 말하고, 스냅샷은 시스템 운영체계 데이터까지 모두 보관하는 것을 말한다.

보통 우분투에서 백업은 deja-dup, 스냅샷은  timeshift, Backup in time, rsnapshot와 같은 도구를 사용한다. 사용방법은 어렵지 않은 데, deja-dup는 시스템 운영체계까지는 저장하지 않는다.

사용 방법은 다음 링크를 참고한다.

우분투 블랙 스크린 문제 해결 방법

이 글은 고질적인 우분투 블랙 스크린(black screen) 문제 솔류션 트리를 간략히 요약한다. 이 문제는 우분투 부팅했는 데, 로그인 조차 안되는 검정색 화면만 보여지는 현상이다. 

블랙 스크린 문제는 14.04, 16.04 모두 공통적으로 발생된다. 주 발생 원인은 NVIDIA + Unity + ubuntu 간에 충돌 발생이다. 충돌 발생 원인은 매우 다양하다. 정상적인 apt-get install 설치 후에도 발생할 수 있다. 이번엔 터치패드 패키지 욕심내어 설치하다, 노트북이 또 벽돌 되어 버렸다(Deja-dup 백업도 의미 없다. 다시 솔류션 트리를 수행하고, 아애 그 과정을 영원히 기록해 놓을 요량으로 글을 쓴다). 그냥 운이 없으면 블랙 스크린을 만난다고 보면 될 것이다.
욕심내지 말껄 T.T~

블랙 스크린은 로그인 메시지도 안뜨는 벽돌 상태로 변하기 때문에, 당하면 멘붕 오게 된다. 
정신이 붕괴되는 빌어먹을 블랙 스크린(처음 대면하면 우주에 혼자 미아가 된 듯 너무 막연하고 황당하다)

본인은 두대의 노트북을 이렇게 날려먹고, 수십번의 블랙 스크린과 무한 구글링을 경험했다. 지금은 아래 솔류션 트리로 한 두시간 만에 벽돌 노트북을 살릴 수 있다.

1. 터미널 모드 부팅 및 NVIDIA 드라이버 재설치
부팅 시 grub에서 e 키를 입력해, grub 스크립트의 부팅 옵션에 nomodeset 옵션(이후 제대로 드라이버 설치된 후에 부팅안되면, 이 옵션을 삭제한 후 부팅 시도)을 추가한 후 F10입력해 부팅함. 이후, 터미널모드(CTRL+ALT+F1)로 부팅한다. 그리고, nvidia 드라이버를 삭제 후, 재 설치해야 한다.

sudo apt-get purge nvidia-*
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

NVIDIA GTX 1070일 경우 다음과 같이 해당 버전의 드라이버를 설치한다. 아니면, 본인 GTX 버전에 맞는 드라이버 번호를 확인(링크)하고, 설치하라.
sudo apt-get install nvidia-384
(혹은 367, 375, 525)

2. 우분투 데스크탑 재설치
운이 없다면, 블랙 스크린 문제가 계속 발생할 것이다. 
이 경우, 다음과 같이, unity, nvidia, ubuntu-desktop, ubuntu-session을 모두 purge하고, 재부팅 후 다시 설치한다.
sudo apt-get purge unity*
sudo apt-get purge nvidia-*
sudo apt-get install ubuntu-desktop
sudo apt-get install ubuntu-session

혹시, 디펜던시 에러가 발생한다면 해당 버전 패키지를 설치하여 해결한다(링크 참고)