일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MYSQL
- String
- 다익스트라
- 이진탐색
- Stored Procedure
- Two Points
- two pointer
- union find
- 그래프
- SQL
- Dijkstra
- Trie
- Hash
- binary search
- DP
- 스토어드 프로시저
- Brute Force
- Today
- Total
목록Linux (33)
codingfarm
4. 작업 예약 주기적으로 반복해야하는 작업을 예약할 수 있는 방법이 주어진다. 정해진 시간에 한번만 수행 정해진 시간에 반복 수행 1. 정해진 시간에 한 번 실행하기 at 명령어 2. 정해진 시간에 반복 실행하기 crontab 명령어
manpages.ubuntu.com/manpages/focal/en/man1/at.1posix.html at [option] time 정해진 시간에 한번만 명령을 실행한다. 옵션 -l : 현재 실행 대기 중인 명령의 전체 목록을 출력한다.(atq 명령과 동일) -r 작업번호 : 현재 실행 대기 중인 명령 중 해당 작업 번호를 삭제 한다.(atrm과 동일). -m : 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려준다. -f 파일 : 표준 입력 대신 실행할 명려을 파일로 지정한다. 사용 예 at 10:00 pm at 8:15 am May 30 at -m 0730 tomorrow at 명령 설치하기 ubuntu 데스크톱에는 at 명령이 기본으로 설치되지 않은 경우가 있다. 아래 명령어로 at을 ..
3. 포그라운드, 백그라운드 프로세스와 작업 제어 3.1 포그라운드 작업과 백그라운드 작업 포그라운드 작업(foreground job) 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 작업 ex) 터미널에서 작업할 때 일반적으로 사용자가 명령을 입력하면 셸이 그 명령을 해석하여 실행하고 결과를 화면에 출력한다. 그러면 사용자는 화면에 출력된 결과를 봐야 다시 명령을 입력할 수 있는 대화식으로 작업을 수행한다. 포그라운드 프로세스 : 포그라운드 작업방식으로 처리되는 프로세스 >> sleep 100 // foreground job // sleep 명령이 끝날 때까지 기다려야 한다. 백그라운드 작업(background job) 사용자가 입력한 명령이 끝나는것과 상관없이 곧바로 ..
manpages.ubuntu.com/manpages/trusty/man1/jobs.1posix.html jos [%작업 번호] 기능 : 백그라운드 작업을 모두 보여준다. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여준다. %작업 번호 %번호 : 해당 번호의 작업 정보를 출력한다. %+ 또는 %% : 작업 순서가 +인 작업 정보를 출력한다. %- : 작업 순서가 -인 작업 정보를 출력한다. 사용예 jobs jobs %1 실행중인 백그라운드 작업은 kill 명령으로 정지시킬 수 있다. jobs 명령의 출력 정보 항목 출력 예 의미 작업 번호 [1] 작업 번호로서 백그라운드로 실행할 때마다 순차적으로 증가한다([1],[2],[3],...) 작업 순서 + 작업 순서를 표시한다. $\cdot$ + : 가장 ..
1. 프로세스의 개념 프로세스 : 현재 시스템에서 실행중인 프로그램 다중 프로세스 시스템 : 여러 개의 프로세스가 동시에 실행되는 시스템 1.1 프로세스의 부모-자식 관계 리눅스에서 모든 프로세스는 부모-자식 관계를 가진다. systemd와 kthreadd를 제외한 모든 프로세스는 부모 프로세스를 지닌다. (이 둘은 리눅스 시스템 부팅시 스케줄러가 실행한다) 자식 프로세스 부모 프로세스에 의해 만들어지는 프로세스 종료시 부모프로세스에게 종료 정보(exit status)를 돌려주고 종료된다. ex) 사용자가 vi를 실행하면 셸이 vi 프로세스를 생성할 경우, 셸은 부모 프로세스가 되고 vi는 자식 프로세스가 된다. 사용자가 vi를 종료하면 다시 부모 프로세스인 셸로 돌아간다. 1.2 PID(process ..
manpages.ubuntu.com/manpages/focal/en/man1/kill.1.html 프로세스에게 signal을 보내어 프로세스를 종료한다. 1. signal 프로세스에 무언가 발생했음을 알리는 간단한 메시지 signal을 받은 프로세스는 기본적으로 종료된다. kill -l 명령으로 리눅스에서 지원하는 시그널 목록을 알 수 있다. 주로 쓰이는 시그널은 아래와 같다. 시그널 번호 기본 처리 의미 SIGHUP 1 종료 터미널과의 연결이 끊어졌을 때 발생 SIGINT 2 종료 인터럽트로 사용자가 `Ctrl + c`를 입력하면 발생 SIGQUIT 3 종료, 코어 덤프 종료 신호로 사용자가 `Ctrl + \`을 입력하면 발생 SIGKILL 9 종료 이 시그널을 받은 프로세스는 무시할 수 없으며 강제로..
manpages.ubuntu.com/manpages/xenial/man1/ps.1.html 기능 : 현재 실행중인 프로세스의 목록을 본다. ps [option] 유닉스 옵션 -e : 시스템에서 실행중인 모든 프로세스의 정보를 출력 -f : 프로세스의 자세한 정보를 출력한다.(PPID, 터미널 번호, 시작 시간 등) -u uid : 특정 사용자에 대한 모든 프로세스의 정보를 출력 -p pid : pid로 지정한 특정 프로세스의 정보를 출력 BSD 옵션 a : 터미널에서 실행한 프로세스의 정보를 출력 u : 프로세스의 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 절보를 출력 x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력 GNU 옵션 --pid PID 목록 : 목록으로 지정한 특정 PID의..
특정파일의 접근권한을 알고 싶을때 우리는 ls -l 명령어를 사용하며 기본접근 권한을 알고 싶을땐 umask를 쓴다. 이런 명령어를 통해 파일들의 유저, 그룹, 다른 사용자들에 대한 접근권한과 기본 접근 권한에 대해 알 수 있다. 하지만 리눅스에는 일반적인 접근 권한 외에 특별한 접근 권한을 제공하는데, 이를 특수 접근 권한 이라 한다. 가령 umask를 실행해보자. 맨 앞자리에 있는 숫자가 특수 접근 권한을 나타낸다. 맨 앞자리의 수가 1,2,4 중 어떤 수를 가지느냐에 따라 특수 접근 권한이 설정된다. 0 : 일반적인 접근 권한 1 : 스티키 비트(sticky bit) 2 : SetGID 4 : GetUID 숫자 권한 종류 0 일반적인 접근 권한 1 스티키 비트(sticky bit) 2 SetGID ..
대부분 키보드로 명령을 입력하면 실행결과는 화면에 출력되는 방식으로 시스템을 사용해왔다. 입룩과 출력으로 사용하는 장치를 바꾸면 입력을 파일에서 읽어오거나 실행결과를 파일로 저장하는 것들이 가능하다. 표준 입출력 장치 리눅스에서는 표준입력장치와 표준출력장치를 아래처럼 정의한다. 표준 입력 장치 : 셸이 작업을 수행하는데 필요한 정보를 받아들이는 장치 표준 출력 장치 : 실행 결과를 내보내는 장치 표준 오류 장치 : 표준 출력과 별도로 오류 메시지를 내보내는 장치 기본적으로 표준 입력장치는 키보드로 설정되어있고, 표준 출력 및 오류 장치는 화면(모니터)로 설정된다. 리눅스는 모든걸 파일로 관리하며 이는 장치도 마찬가지다. 파일 디스크립터(file descriptor) : 셸이 작업에 필요한 파일을 관리하기..
셸은 사용자가 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수문자를 제공한다. 여기서는 bash shell을 기준으로 설명한다. 주요 특수문자들 : *, ?, |, ;, [ ], ~, '', "", `` 등... 특수문자 * 임의의 문자열을 나타낸다. 0개 이상의 문자로 대체된다. 명령 실행시 파일명을 넣을 자리에 *을 사용하면 모든 파일을 나타낸다. 사용 예 의미 ls * 현재 디렉터리의 모든 파일과 서브 디렉터리를 나열한다. 서브 디렉터리의 내용도 출력한다. cp * /tmp 현재 디렉터리의 모든 파일을 /tmp 디렉터리 아래로 복사한다. ls -F t* 파일명이 t로 시작하는 모든 파일의 이름과 파일 종류를 출력한다. cp *.txt ../ch3 확장자가 .txt인 ㅍ모든 파일을 상위 디렉터..
manpages.ubuntu.com/manpages/bionic/ko/man1/chsh.1.html 사용자 로그인 shell을 바꾼다. 옵션 -s shell : 지정한 셸(절대 경로)로 로그인 셸을 바꾼다. -l : /etc/shells 파일에 지정된 셸을 출력한다. chsh [option] [username] chsh chsh -l chsh -s /bin/sh user1
shell은 리눅스 커널과 사용자를 연결하는 역할을 수행한다. 리눅스의 기본제공 shell인 bash shell은 UNIX의 shell인 bourne shell과 호환성을 유지하면서 편리한 기능을 제공하여 리눅스 뿐만 아니라 UNIX에서도 널리 사용된다. 1. 셸의 기능과 종류 shell은 사용자와 리눅스 커널사이에서 중간자 역할을 수행한다. bourne shell, bash shell 등 여러 종류가 있다. 1.1 shell의 기능 명령어 해석기 기능 사용자와 커널 사이에서 명령을 해석하여 전달한다. 가령 사용자가 로그인을 하면 shell이 자동으로 실행되어 사용자가 명령을 입력하기를 기다린다. 프롬프트 : 셸이 사용자의 명령을 기다리고 있음을 나타내는 표시 셸의 작동방식 대기상태로 있다가 사용자가 입..
터미널 환경에서 사용가능한 모드형 편집기 유닉스에서 제공한 편집기인 vi를 업그레이드함 1. 리눅스의 문서 편집기 vi의 저장과 종료 명령 키 모드 명령 키 기능 마지막 행 모드 :q vi에서 작업한것이 없을 때 그냥 종료한다. :q! 작업한 내용을 저장하지 않고 종료한다. :w [파일명] 작업한 내용을 저장만 한다. 파일명 지정시 새파일로 저장한다. :wq, :wq! 작업한 내용을 저장하고 vi를 종료한다. 명령 모드 Zz(Shift + zz) 작업한 내용을 저장하고 vi를 종료한다. 입력 모드로 전환 명령 키 긴으 i 커서 앞에 입력한다. a 커서 뒤에 입력한다. o 커서가 위치한 행의 다음 행에 입력한다. I(대문자 i) 커서가 위치한 행의 첫 칼럼으로 이동하여 입력한다. A 커서가 위치한 행의 마..
manpages.ubuntu.com/manpages/focal/en/man1/find.1.html 조건에 맞는 파일의 디렉터리를 찾는다. grep이 파일 내용을 검색하는데 반해 find는 파일의 생성 일자와 이름, 소유자 등 다양한 조건에 맞는 파일을 찾는다. 옵션 -name filename : 파일명으로 검색한다. -type filetype : 파일 종류로 검색한다. -user loginID : 지정한 사용자가 소유한 모든 파일을 검색한다. -per access_authority : 지정한 사용 권한과 일치하는 파일을 검색한다. 동작 -exec : 검색된 파일에 명령을 실행한다. -ok 명령 : 사용자의 확인을 받아서 명령을 실행한다. -print 명령 : 검색된 파일의 절대 경로명을 화면에 출력한다(..
manpages.ubuntu.com/manpages/focal/en/man1/grep.1posix.html 파일 내에서 특정 문자열을 검색할 때 사용한다. 정규 표현식을 이용한 복잡한 검색도 가능하다 옵션 -i : 대문자$\cdot$소문자를 모두 검색한다. -l : 지정한 패턴이 포함된 파일명을 출력한다. -n : 행 번호를 출력한다. grep root /etc/passwd grep -l hello *.c grep -n unix ~/*.txt 인자로 지정한 문자열을 검색할 수 있다. 실습을 위해 /etc/services 파일을 data 파일로 복사했다. -n 옵션으로 검색된 행의 번호도 함께 출력 가능하다. vim으로 확인결과 126번째 줄에 NNTP가 있음을 볼 수 있다.
manpages.ubuntu.com/manpages/focal/en/man1/touch.1posix.html 빈 파일을 새로성생하거나 파일의 마지막 접근 시간 또는 수정시간을 변경한다. 인자로 지정한 파일이 존재하지 않으면 내용이 없는 빈 파일을 생성한다. 파일이 존재하면 현재 시간 또는 옵션에 지정한 시간으로 파일의 관련 시간을 변경한다. 옵션 -a : 접근 시간만 변경한다. -m : 수정 시간만 변경한다. -t : [[CC]YY]MMDDhhmm[.ss] : 시간을 집적 입력한다. touch file_name 비어있는 파일이기에 크기가 0으로 설정된다. 시간표시 형식 : [[CC]YY]MMDDhhmm[.ss] CC : 연도의 첫 두자리 YY : 연도의 마지막 두자리 MM : 달(01~12 범위) DD ..
manpages.ubuntu.com/manpages/focal/en/man1/ln.1posix.html 링크를 생성한다. 옵션 -s : 심벌릭 링크 파일을 생성한다. ln test lntest ln -s test lntest 하드링크 만들기 : -l 옵션 리눅스에서는 하드링크 기능으로 파일에 여러개의 이름을 붙일 수 있다. 이때 붙이는 파일명을 하드링크라 한다. ln 명령으로 실행파일 a.out의 하드링크인 a_ln.out을 만들었다. a.out과 a_ln.out의 inode값이 같은것을 볼 수 있다. 3번째 열의 숫자가 1에서 2로 바뀌었음을 확인하라. 결국 a.out과 a_ln.out은 이름만 다르지 같은 파일이다. cp 명령어로 완전 독립적으로 복제하는 것과는 달리 심벌릭 링크는 원본 파일이 변경되..
기존 파일에 새로운 이름을 붙이는것 복잡한 디렉터리 계층 구조를 포함하여 파일명이 복잡할경우, 짧게 줄인 다른 이름을 붙여 원하는 디렉토리에 두게끔 한다. 하드링크와 심벌릭 링크가 있다. 하드링크 : 기존 파일에 새로운 파일명을 추가로 생성 파일에 여러개의 이름을 붙인다고 볼 수 있음 심벌릭 링크 : 원본 파일을 가리키는 새로운 파일을 만드는것 윈도우의 바로가기 기능과 유사 리눅스 파일 구성 우선 리눅스에서 파일이 어떻게 관리되는지 알아본다. 리눅스에서는 파일이 '파일명 + inode + 데이터블록'으로 구성된다. 파일명 : 사용자가 파일에 접근할 때 사용하는 파일의 이름 inode : 파일에 대한 정보를 가지고 있는 특별한 구조체 외부적으로는 번호로 표시된다. 내부적으로는 파일의 종류와 크기, 소유자,..