[Tools and Tips] Linux 명령어
시스템 정보
- Linux 정보
- Linux 이름과 커널 버전 알기
> uname -a |
- Linux 배포판 알기
> cat /etc/*rel* |
(redhat일 경우 # cat /etc/redhat-release 와 같은 의미이다)
- 프로세서 정보
> cat /proc/cpuinfo |
- 메모리 정보
> cat /proc/meminfo |
- hostname 변경
- /bin/hostname하면 된다
> hostname [HostName] |
이거하고 나서 echo $HOSTNAME하면 예전 이름이 나오나 쉘을 다시 띄어주면된다.
- 시간설정
> date 0901182605.00 |
(9월1일 18:26:00, 2005)이란 뜻이다.
- 쉘에서 색깔바꾸기
> vi /etc/DIR_COLORS |
내용을 바꿔준다.
- 디스크(disc) 사용량 확인하기
- Dash에서 "System Monitor"라고 검색하여 [시스템 감시] 항목을 실행한다.
- [시스템 감시]에서 파일시스템(File Systems) 탭을 누르면 현태 물리적 디스크 장치의 사용량을 알 수 있다.
- 참고로 터미널에서는 아래의 명령어
> df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 102G 22G 75G 23% / ... |
- 소프트 링크
> ln -s (대상) (생성할 링크 이름) |
프로그램 설치/실행/로깅
- RPM
- rpm 설치된거 묻기
> rpm -qa | grep http |
- rpm 설치하기
> rpm -Uvh http.rpm |
- rpm 강제로 설치하기
> rpm -Uvh --force --nodeps http.rpm |
- 우분투 패키지
- 패키지 검색 (Program 이라는 단어를 포함한 패키지 검색)
>apt-cache search program |
- 패키지 설치
>sudo apt-get install program |
- 로컬 패키지 설치
>sudo dpkg (--force-depends) -i program.deb |
- deb는 Debian binary package를 의미하며 이는 우분투가 Debian GNU/Linux 배포판 기반이라서 그렇다.
- --force-depends는 패키지 의존성 에러를 무시하는 것이라서 특별히 문제없는데 의존성 에러 떨어져서 어쩔 수 없는 경우에 사용한다.
- 모든 패키지 업그레이드
>sudo apt-get upgrade |
- 패키지 삭제 (설정 파일은 삭제 제외)
>sudo apt-get remove program |
- 패키지 삭제 (설정 파일도 싹 다 지움)
>sudo apt-get purge program |
- 프로그램 실행 로그 처리
- stdout과 stderr의 redirection
> a.out >> file 2>&1 |
압축
- tar
- tar 풀기
> tar xvzf filename.tar.gz |
- tar로 묶기
> tar cvzf filename.tar.gz [file1] [file2] … |
- zip
- zip 풀기
> unzip [file] |
찾기
- find 사용하여 파일 찾기
> find (시작위치) (옵션) |
- ex) > find . -name "filename" ! -type d
현재위치부터 이름이 "filename"인것 중에서 디렉터리가 아닌것들을 찾는다 - ex) > find . -mtime -6 -type f
현재위치부터 수정한 날짜가 6일 미만인 것들 중 file들만 찾는다 (분단위일 경우 -mtime 대신 -mmin)
- 찾은 파일 실행하기
- find한 결과 파일을 삭제하기
> find . -name "filename" -exec rm -rm_options {} \; |
또는
> find . -name "filename" | xargs rm -rm_options |
- *.c, *.h파일을 찾은 다음 total line수 구하기
> find . -name "*.[ch]" | xargs wc -l |
또는
> find . -name "*.cpp" -or -name "*.h" | xargs wc -l |
ex) Source 코드 사이즈
> find include/Common include/SingleView include/ServiceAbstraction include/CommonFramework include/test src -name "*.cpp" ! -name "*Test*.cpp" -o -name "*.h" ! -name "*Test*.h" | xargs wc -l |
- find한 결과 파일들에서 단어찾기
> find . -name "*.h" | xargs grep Deprecated |
- grep 사용하여 파일 찾기
- 문자열 제외하는 방법
1. -v 옵션을 반복해서 사용
> grep Hello * | grep -v apple | grep -v orange | grep -v banana |
2. -Ev 옵션으로 패턴 적용 (포함하는 것을 찾을 때는 -Ev 대신 -E)
> grep Hello * | grep -Ev 'apple|orange|banana' |
- grep 결과 중 특정 column만 뽑아내는 방법
awk를 활용 (사실 임시 방법, 더 좋은 방법 검색 필요)
예) 특정 키워드를 가지고 있는 파일과 line number 출력하기
> grep Hello * -r -n | awk '{ print $1 }' |
- binary file이라고 grep이 안될 경우
1. -a option을 준다.
예) 특정 키워드를 가지고 있는 파일과 line number 출력하기
> grep Exception dumpState_201502111111.log Binary file dumpState_201502111138.log matches > grep -a Exception dumpState_201502111111.log |