※ 요약


리눅스 명령어 jobs는 작업이 중지된 상태, 백그라운드로 진행 중인 작업 상태, 변경 되었지만 보고되지 않은 상태 등을 표시하는 명령어다.


※ 경로


내부 명령어


※ 사용법


jobs [옵션] [job ID]

jobs -x command [args]



※ 옵션


 옵션

 설명

 -l

 프로세스 그룹 ID를 state 필드 앞에 출력

 -n

 프로세스 그룹 중에 대표 프로세스 ID를 출력

 -p

 각 프로세스 ID에 대해 한 행씩 출력

 command

 지정한 명령어를 실행



※ jobs로 알 수 있는 세션의 상태 값


 상태

 설명

 Running

 작업이 일시 중단되지 않았고 종료하지 않고 계속 진행 중임

 Done

 작업이 완료되어 0을 반환하고 종료 했음을 의미

 Done(code)

 작업이 정삭적으로 완료되었으며, 0이 아닌 코드를 반환 했음을 의미

 Stopped

 작업이 일시 중단

 Stopped(SIGTSTP)

 SIGTSTP 신호가 작업을 일시 중단

 Stopped(SIGSTOP)

 SIGSTOP 신호가 작업을 일시 중단

 Stopped(SIGTTIN)

 SIGTTIN 신호가 작업을 일시 중단

 Stopped(SIGTTOU)

 SIGTTOU 신호가 작업을 일시 중단



※ 요약


리눅스 명령어 hostid는 현재의 호스트 정보를 16진수 형태로 보여준다. 이 정보는 호스트 고유의 번호로써, 다른 호스트들과 구별되며 주로 인터넷 주소를 부여할 때 사용된다.


참고로 호스트ID는 네트워크 내에서 워크스테이션, 서버, 라우터, 기타 TCP/IP 등의 각 서버들을 구분하는 역할을 한다. 각 호스트의 주소는 반드시 네트워크 ID를 기준으로 정확한 값을 가져야 하며 동일한 네트워크 안에서 유일해야 한다.



※ 경로


/usr/bin/hostid


※ 사용법


hostid [옵션]


※ 옵션


 옵션

 설명

 --help

 hostid 명령어의 사용법 출력

 --version

 hostid 명령어의 버전 정보 출력



※ 사용예


아래는 필자의 리눅스 시스템에서 간단히 사용해본 화면이다.


※ 관련 페이지





※ 요약


도메인(호스트)명은 알고 있는데 ip주소를 모르거나 혹은 그 반대의 경우에 사용하는 명령어다. 호스트명을 이용하면 ip주소 뿐만이 아니라 하위 호스트명도 조회할 수 있다. 호스트는 시스템에 등록된 DNS서버를 이용하여 검색하는데, 다른 DNS 서버를 이용하고 싶다면 따로 지정해 줄 수도 있다.


※ 경로


/usr/bin/host


※ 사용법


host [옵션] [도메인 혹은 IP주소] [DNS서버]



※ 옵션


 옵션

 설명

 -a

 -t ANY와 같은 기능

 -d

 디버깅 모드로 출력

 -l zone

 zone 아래 모든 시스템을 출력

 -r

 반복 처리를 안 함

 -t type

 type을 지정하여 정보를 얻음

 (A:호스트ip주소, NS:검색한 호스트의 네임 서버 호스트명, PTR:도메인 네임 포인터, ANY:타입의 모든 정보)

 -w

 DNS 서버의 응답을 기다림

 -v

 자세한 정보 출력



※ 사용예


아래는 간단한 사용예다. host 명령어를 이용하여 네이버의 ip를 조회하여 보았고 아래와 같이 4개의 ip정보를 얻을 수 있었다. 당연한 얘기지만 네이버 같이 사용자가 많은 사이트는 여러 개의 서버를 이용한다.


아래는 kornet의 DNS 서버를 이용하여 조회해본 화면이다.



※ 요약


리눅스 명령어 ex는 라인 단위의 대화식 텍스트 에디터로써, 현재는 거의 사용되지 않고 vi에 내장되었다.


※ 경로


/bin/ex


※ 사용법


ex 파일명


※ 변천사


 ed

 유닉스 기본 행 단위 편집기

 ex

 발전된 형태의 ed(Extended ed)

 vi

 화면 편집기, ex의 명령들을 채택

 vi 클론

 vi가 발전된 형태로써 vim, elvis 등이 있음



※ 요약


FTP를 이용하는 분들은 아시겠지만 ftp는 Active모드와 Passive모드가 존재한다. 일반적으로 사용할 때는 무엇이 더 좋다할 정도는 아니며 필자가 사용중인 CentOS7에는 기본적으로 액티브 모드가 기본 값이라 이번 포스트에서는 패시브 모드를 설정하는 방법을 알아보도록 하겠다.


※ Active 모드 방식 및 특징


- 모든 클라이언트에서 서버측 21번 포트로 접속을 시도하고 클라이언트가 사용할 두번째 포트를 서버에 통보

- 서버는 클라이언트에게 ack를 보내고 서버의 20번 포트는 클라이언트가 알려준 두번째 포트로 접속을 시도

- TCP/IP에서는 보통 클라이언트가 서버에 접속을 시도하는데 액티브모드에서는 서버가 클라이언트로 접속을 시도

- 만약 클라이언트 PC등에 방화벽이나 공유기가 있어 외부에서 접속을 허용하지 않는다면, 서버(20번포트) -> 클라이언트(1024~65535포트)의 접속이 정상적으로 되지 않아 FTP 로그인은 되지만 데이터 전송 및 디렉토리, 파일 리스트를 받지 못하는 문제가 발생


※ Passive 모드 방식 및 특징


- 모든 클라이언트에서 서버측 21번 포트로 접속(login)을 시도

- 서버는 클라이언트에게 서버에서 사용할 두번째 포트(1024~65535포트)를 통보

- 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도하고 데이터를 전송

- 서버에서 클라이언트가 접속할 수 있도록 1024~65535 사이의 포트를 개방해야 하는 문제점이 발생할 수 있지만 접속 범위를 설정하므로써 문제 해결



※ 설정 방법


vi /etc/vsftpd/vsftpd.conf 라고 입력하여 vsftpd의 설정 파일을 열도록 한다.


설정 파일 제일 아래에 다음 항목을 추가 입력한뒤 저장하고 나오면 된다.

#pasv mode enable

pasv_enable=YES


#pasv port range

pasv_min_port=30000

pasv_max_port=30001



참고로 min 포트와 max 포트는 원하는 포트로 설정 가능하며 같은 값을 줄 경우 포트 고정이 가능하다. 설정을 저장하였으면 vsftpd 서비스를 재시작해주거나 재부팅해주면 설정이 적용되며, 시스템에 따라 방화벽 설정을 추가로 해줘야 하는 경우도 있다. 필자는 방화벽은 안해줘도 되서 여기까지만 작성하도록 하겠다.



※ 요약


필자는 리눅스(CentOS7) 서버를 운영중이고, 이 서버에 FTP를 구축하여 처음 연결을 시도하였는데 아래와 같이 500 OOPS vsftpd: refusing to run with writable root inside chroot()라는 메시지와 함께 Critical error가 뜨면서 연결이 되지를 않았다. 원인은 chroot내에 쓰기 권한이 없어서 발생한 문제로써, 설정을 바꿔주면 해결되는 문제다.



※ 해결 방법


참고로 필자는 CentOS7 배포판을 이용중이다. 우분투나 기타 다른 배포판은 설정 방법이 조금 다를 수 있으므로 참고바란다. 먼저 vi로 /etc/vsftpd/vsftpd.conf 파일을 열도록 한다.



vi 내에서 찾기로 allow_writeable_chroot를 찾으면 아래와 같이 설정 값 하나를 찾을 수 있는데, 값을 YES로 바꿔준뒤 저장하고 빠져나온다. 찾기는 /를 누르고 찾을 검색어를 입력한후 엔터를 누르면 된다.


설정을 저장하였다면 서비스를 재시작하여 변경된 설정 값이 적용되도록 한다. 서비스 재시작은 service vsftpd restart라고 입력하면 된다.



※ 요약


리눅스 명령어 rdate는 remote date의 줄임말로써, 원격지의 타임서버에서 시간 정보를 가져와 로컬 시스템의 시간과 동기화를 하는 명령어다. 타임 서버에서 시간 정보를 가져오는 이유는 정확한 시간을 제공해주기 때문이다.


※ 경로


/usr/bin/rdate


※ 사용법


rdate [옵션]... [타임서버 주소]


※ 옵션


 옵션

 설명

 -4

 IPv4만 사용

 -6

 IPv6만 사용

 -o num

 지정한 포트(num)으로 연결

 -p

 호스트의 정보만 출력하고 설정은 안 함

 -s

 설정만 하고 내용은 출력 안 함

 -u

 TCP 대신 UDP 사용

 -v

 상세한 정보 출력



※ 사용예


빨간 줄은 필자의 서버 시간이고 파란 줄은 타임 서버(time.bora.net)의 시간이다. 보면 알겠지만 3분 30여 초의 차이가 나는데, rdate 명령어를 통해 시간을 동기화 시키도록 하겠다.



rdate -s time.bora.net 이라고 입력한뒤 date 명령어로 시스템 시간을 확인해보니 타임서버와 시간이 동기화된걸 확인할 수 있었다. 2초 차이는 명령어 입력에 따른 지연 시간이니 참고하기 바란다.




※ 요약

리눅스 명령어 cd는 디렉토리를 이동할때 사용하는 명령어다. 


※ 사용법

 항목

 설명

 cd [디렉토리 경로]

 이동하려는 디렉토리로 이동

 cd .

 현재 디렉토리

 cd ..

 한 단계 상위 디렉토리로 이동

 cd /

 최상위 디렉토리로 이동

 cd $변수명

 변수에 저장된 경로로 이동

 cd ~

 cd $HOME

 cd 

 사용자 홈 디렉토리로 이동

 cd ~계정명

 입력한 사용자의 홈 디렉토리로 이동

 cd -

 이전 경로로 이동



※ 사용예

cd는 간단한 명령이라 사용예는 굳이 필요없지만 그래도 올려본다.


아래는 cd ~를 입력하여 사용자 홈 디렉토리로 이동하는 사용예다.



pwd로 현재 위치를 확인했을때 ~디렉토리인데, ~디렉토리 이전에는 /에 위치하고 있었다. 이때 cd -를 입력하여 이전 경로인 /로 다시 이동하는 모습이다.


아래는 cd [이동하려는 디렉토리 경로]를 입력하여 임의의 위치로 이동하는 모습이다.




※ 요약

리눅스에서 정말 많이 사용하는 명령어 중 하나인 ls, 필자도 정말 많이 사용하는데, 마음에 안드는게 하나 있다면 시간 출력 형식이랄까? 바로 아래와 같이 말이다. 코쟁이들은 숫자면 숫자, 글자면 글자만 사용할 것이지 글자랑 숫자랑 섞으니 가독성도 안좋고 공간도 많이 차지하지여 불편하지 않은가.. 물론 날짜 표기를 월.일.연 혹은 일.월.연 등 순서가 뒤죽박죽이라 구분하기 위해서라지만 한국 사람들에게 불편한건 변함이 없다. 아무튼 이번 포스트에서는 이러한 날짜 형식을 내 맘대로 조절해보도록 하겠다.



※ 설정 방법

먼저 vi ~/.bashrc를 입력하여 아래와 같이 .bashrc 파일을 열도록 한다. 아시겠지만 .bashrc는 홈디렉토리 하위에 존재하며 ~는 홈 디렉토리를 의미하므로 vi ~/.bashrc라고 입력하면 누구나 자신의 파일을 열 수 있다. 


아무튼 필자는 아래와 같이 3줄을 입력하였다. 참고로 3줄 다 입력할 필요는 없는데, 3줄이나 입력한 이유는 이렇게 입력하면 저렇게 나오더라는 걸 보여주기 위함이다.

alias ls='ls --color=auto --time-style=long-iso'

alias ll='ls --time-style='+[%y/%m/%d_%H:%M:%S]' -lh'

alias data='cd /home/shaeod/data/'



먼저 첫 번째 빨간 박스는 첫 번째 줄로 입력한 라인의 출력 결과다. 단순히 ls만 날짜 형식을 바꿔주었으므로 뒤에 옵션 -al을 줘봤다. 두 분째는 필자가 자주 사용하는 옵션과 함께 날짜 형식을 바꿔주어서 ll(소문자 엘엘)만 입력하여도 날짜 형식이 바껴서 출력됨과 동시에 리스트 형식으로 출력되고 파일 사이즈도 사람이 보기 편한 단위로 출력된걸 볼 수 있다.


참고로 아래와 같이 두 번째 줄을 조금 수정하면 문자도 포함할 수도 있다.



※ 커스터마이징 방법

상기의 필자가 제시한 가이드말고 본인에게 더 맞게 커스터마이징하고 싶다면 아래 두 사이트를 참고하면 될 것이다. 정 안되면 댓글을 남겨두시라. 필자가 도와드리겠다.

- [리눅스 명령어] ls - 파일 및 디렉토리 내 목록보기

- srtftime(3) - Linux man page



※ 요약

카페24에서 새로운 리눅스 가상 서버를 분양 받은뒤 파이썬3 설치 작업을 위해 일반 계정으로 sudo 명령을 실행하니 아래와 같이 계정명 is not in the sudoers file.  This incident will be reported. 이라는 메시지가 나오며 root 권한을 못 얻는게 아닌가? 원인은 /etc/sudoers에 계정이 등록되지 않아 발생한 문제였었고, 현재는 계정을 등록 해줌으로써 문제를 해결한 상태다. 이 포스트는 다음에 또 같은 문제로 고생하지 않기 위해 정리할겸 포스팅한다.




※ 설정 방법

sudo가 안되므로 root로 로그인한뒤 visudo -f /etc/sudoers 라고 입력한다.



아래와 같이 root 계정 밑에 아래 행을 추가해준다. 필자는 root 행을 그대로 복사(yy)하여 붙여(p)넣은뒤 계정만 바꿔주었다. :wq로 저장하고 나와 재부팅해주면 sudo 명령 및 su 명령이 잘 되는 걸 확인할 수 있을 것이다.




+ Recent posts