프로그래밍/리눅스 9

프로세스 실행( fork(), exec() )

fork()와 exec() 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용합니다. 둘의 차이점은 fork : 프로세스를 실행하는 도중, 새로운 프로세스를 위한 메모리를 할당해 호출한 프로세스를 복사합니다. 즉, 새로운 프로세스를 만들어 실행시킵니다. exec : 현재 실행중인 프로세스가 할당된 영역에 호출한 프로세스를 실행시킵니다. 즉, 실행되고 있던 프로세스가 사라지고 새로운 프로세스가 동작합니다. 더 자세한 내용이 궁금하시다면 밑의 블로그에서 확인하실 수 있습니다. fork() 와 exec() fork()와 exec()는 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용하게 됩니다. exec에는 execl, execv등 여러가지 함수군을 가지고 있습니다. exec의 함수군에 대해서는 ..

프로세스 우선순위 설정( nice, renice )

리눅스에서 nice와 renice명령어는 프로세스의 우선순위를 변경하는 기능을 합니다. 다른점 - nice는 우선순위를 정해 프로세스를 실행시킵니다. - renice는 이미 실행중인 프로세스의 우선순위를 변경합니다. NI(nice)는 일반적인 프로세스에서의 우선순위이고, PR(priority)은 리눅스 시스템 전반에서 우선순위입니다. nice와 renice는 NI값을 변경합니다.( 우선순위는 숫자가 작을수록 높습니다. ) PR과 NI를 확인하고싶다면 리눅스에서 top명령어를 입력하면 됩니다. 둘 다 우선순위에 대한 값이며, PR은 NI를 포함하는 개념입니다. 즉, PR과 NI는 상관관계가 존재합니다. ( PR의 범위는 1~139, NI의 범위는 -20~19입니다. ) 더 자세한 내용은 밑의 블로그를 참고..

~/.bashrc 에 대해서

bashrc 파일에 대해 이야기하기 전에 쉘(Shell)에 대해 먼저 설명하겠습니다. 쉘이란, 사용자가 입력한 명령어를 해석해, 커널에게 전달해 사용자가 원하는 작업을 수행하도록 만들어주는 프로그램입니다. 가장 널리 쓰이는 쉘 프로그램은 bash입니다.( 쉘 스크립트 파일의 시작이 #!/bin/bash 인 것을 볼 수 있는데, bash라는 쉘 프로그램을 사용한다는 것입니다. ) - bash는 Bourne Again Shell의 축약어입니다. - .으로 시작하는 파일은 숨김 파일입니다. 일반적으로 bashrc 파일에는 명령어의 별칭(alias)과 bash가 수행될 때 실행되는 함수를 제어하는 지역적인 시스템 설정에 대한 파일입니다.( ~/. bashrc에서 정의된 별칭과 함수들은 오직 해당 사용자에게만 적..

umask란 무엇인가

파일을 만들 때 기본적인 권한(Permission)을 자동으로 설정하는데 그에 사용되는 값이 umask값입니다. 파일을 생성할 파일의 권한( rwx-rwx-rwx 권한을 2진수로 표현하면 111-111-111 = 777이 됩니다. )을 각 자리수에 맞는 umask값을 빼줍니다.( 파일은 666, 디렉토리는 777권한으로 생성됩니다 ) 예시 : umask=002일 때 파일을 생성한다면, 666 - 002 => 664 권한을 가진 파일이 생성됩니다. 초기에 설정된 권한을 변경하려면 chmod명령어를 사용하면 됩니다. 예시 : chmod 555 file_name -> 해당 파일의 권한이 555로 변경됩니다. umask를 사용하면 개인이 사용하는 계정에서 새로 만든 파일( 또는 디렉토리 )을 따로 설정하지 않아..

quota란 무엇인가

quota설정은 사용자별로 디스크 사용량을 제한할 때 사용합니다. 많은 사용자들이 함께 사용하는 서버에서 사용자별( 또는 그룹별)로 디스크 사용량을 제한할 때 사용합니다. quota 관련 명령어 : - 디스크 사용량 제한(quota) 파일, 설정의 이상유무 체크 : quotacheck - 디스크 사용량 제한 설정 : edquota - 현재 설정된 디스크 사용량 제한 내용 확인 : quota - 디스크 사용량 제한 설정 실행 : quotaon - 디스크 사용량 제한 설정 중지 : quotaoff quota 설정 개념 - Soft Limit : 디스크 사용제한 용량을 넘기게되면 유예기간(Grace Period)내에서는 허용하고, 사용자에게 디스크 사용량제한을 넘겼다고 경고합니다. - Hard Limit : ..

백그라운드와 포그라운드란 무엇인가

프로그램이 백그라운드(background)에서 실행되고 있다는 말을 한 번쯤을 들어보셨을 겁니다. 여기서 백그라운드란, 우리에게 출력되는 화면에는 나오지 않지만 컴퓨터 내부에선 작업은 실행되고 있는 것을 말합니다. 백그라운드와 비슷한 개념으로 포그라운드(foreground)라는 용어도 있습니다. 포그라운드에서 동작한다면 컴퓨터에서 작업하는 모습을 화면에 출력합니다. 즉, 작업하는 것을 계속 보여주기에 추가적인 다른 작업을 할 수 없습니다. 포그라운드와 백그라운드에 대해 이해하기위해 간단한 실습을 해보겠습니다. 한 터미널은 한 세션이라고 합니다. 2개의 터미널을 열고 각 터미널에서 돌아가고 있는 프로세스를 확인합니다. 좌측은 pts/3 에서 동작하고 있고, 우측은 pts/1에서 동작하고 있습니다. 이 파일..

쓰레기통과 유사한 기능을 가진 실행파일 만들기

쉘스크립트로 쓰레기통과 유사한 기능을 가진 실행파일을 만들어보겠습니다. 기능으로는 1. 하나의 파일을 지정된 디렉토리(쓰레기통 디렉토리)로 이동하기. 2. 현재 디렉토리 내부의 모든 파일을 정해진 디렉토리로 이동하기, --a라는 옵션을 주면 모든 파일을 옮기는 것이고, 하나의 파일명만 준다면 해당파일만 지정된 디렉토리로 옮깁니다. 인자가 2개 이상이라면 $2에 값이 들어오므로 값을 확인하라는 문장을 출력해줍니다. 현재 디렉토리가 아닌 다른 디렉토리에서도 이 파일을 실행할 수 있도록 환경변수를 수정해줍니다. (go_trash.sh 파일이 있는 디렉토리의 경로를 추가합니다.) export PATH=$PATH:/home/student/MyPlayGround/learning/Linux/shell_script_p..

장치 자동으로 마운트 시키기

우리는 물을 사용하기 위해 근처의 강이나 계곡에 갈 필요가 없습니다. 물을 끌어올 수 있는 파이프를 설치했기 때문에 집에서 수도꼭지만 돌려도 물이 나오기 때문입니다. 컴퓨터의 처리장치( CPU )에서 계산할 데이터를 기억장치에서 가지고 오고 저장시키는 일 또한 우리가 일일이 데이터의 저장 공간을 지정해주고 데이터의 주소를 적어 데이터를 가져와야 하지만 마운트를 한다면 기억장치를 손쉽게 사용할 수 있습니다. 사실 마운트를 하지 않는다면 일반 사용자들은 기억장치를 사용할 수 없다고 할 수 있습니다. 그렇기 때문에 컴퓨터에 기억장치( 예를들어 하드디스크 )를 추가한 후 마운트를 해야하는데, 리눅스에서는 장치를 종료할 때 마운트가 풀립니다. 장치를 다시 작동시킬 때에도 바로 마운트되도록 설정해보겠습니다. ( 관..

hard link와 soft link

hardlink 명렁어 : ln 파일 링크파일 softlink 명령어 : ln -s 파일 링크파일 원본파일.txt 을 링크하여 만든 파일은 원본파일.txt의 내용을 변경하게 되면 링크된 파일들의 내용또한 동일하게 바뀝니다. hardlinkOrigin파일을 하드링크로 hardlinkOrigin.ln 파일을 생성하였습니다. 하드링크란 저장장치에 있는 데이터의 저장공간을 참조하는 파일을 새로 만듭니다.( 동일한 파일은 아닙니다. 참조하는 기억장치의 주소만 같습니다. ) 소프트링크란 저장장치의 주소값을 참조하는 기존 파일이 저장된 주소값을 참조합니다. 즉, 하드링크로 만든 파일은 기존의 파일이 사라지더라도 기억장치에서 데이터를 참조할 수 있지만, 소프트링크로 만든 파일은 기존의 파일이 사라질 경우 기억장치에서 ..