LINUX

포스트: 477|조회수: 0|TERM
Items

Posts

477 posts

리눅스에서 특정 디렉토리를 다른 디렉토리에 마운트(mount)하기 (--bind 옵션)

반달가면|2019년 5월 11일

특정한 디렉토리를 다른 디렉토리에 마운트(mount)해서 양쪽 디렉토리가 같은 곳으로 연결되도록 할 수 있다. mount에서 --bind 옵션을 사용하면 된다. 예를 들어 /home/john/data 디렉토리를 /home/jane/data_from_john 디렉토리에 연결하는 경우다. mount를 사용하므로 심볼릭 링크(symbolic link)와 달리 루트 권한을 필요로 한다. # /home/john/data 디렉토리를 /home/jane/data_from_john에 마운트 sudo mount --bind /home/john/data /home/jane/data_from_john 마운트를 해제하려면 umount를 사용. # 마운트 해제 sudo umount /home/jane/da

[리눅스커널][가상파일시스템] 수퍼블록: 슈퍼블록 정보를 statfs 시스템 콜로 읽는 과정 살펴보기

Guillermo Austin Kim|2019년 5월 8일

슈퍼블록 각 멤버들은 파일시스템에 대한 메타 정보를 저장합니다.유저 공간에서 파일시스템 정보를 알려면 어떤 함수를 호출해야 할까요? 유저 공간에서 statfs() 함수를 호출하면 커널 공간에서 해당 시스템 콜 핸들러 함수인 sys_statfs() 함수를 실행합니다. 예제 코드는 다음과 같습니다.1 #define FILENAME_NAME "/home/pi"2 #define BUFF_SIZE 2563 int main() 4 {5 struct statfs file_sys_info;6 char fname[BUFF_SIZE] = {0,};78 strcpy(fname, FILENAME_NAME);9 12 if(statfs(fname, &file_sys_info)) {13 printf("Unable to s

리눅스 systemd 타겟(target)과 init 런레벨(runlevel)

반달가면|2019년 5월 3일

최근에 접하는 리눅스 배포판은 시스템/서비스 관리자로 systemd가 탑재되어 있다. 예전에 사용하던 런레벨(runlevel) 대신 타겟(target)이라는 용어를 사용하고, 대응 관계는 아래와 같다. runlevel 0 정지(시스템 종료) - poweroff.target runlevel 1 단일 사용자(single user) - rescue.target runlevel 2,3,4 다중 사용자(multiuser) - multiuser.target runlevel 5 다중 사용자 + GUI - graphical.target runlevel 6 재기동 - reboot.target 실행레벨 변경은 init 명령을 사용하는데, systemd의 경우 systemctl의 isolate 옵션을 사용한다

[bash: cut] 필드 구분자(delimiter)가 없는 경우 출력 억제하기

반달가면|2019년 4월 25일

우선, cut 명령어의 기본적인 사용 예시는 이전 게시물을 참고하자. 여기로. cut 명령으로 특정 부분을 잘라낼 경우 필드 구분자(delimiter)를 기준으로 잡는데, 필드 구분자가 없을 경우에 기본적으로 행 전체를 출력하게 된다. 아래의 예시를 보자. # 필드 구분자를 콜론(:)으로 지정, 2번째 항목 가져오기 echo "abc:def" | cut -d':' -f2 def # 대상 문자열에 필드 구분자가 없는 경우 echo "abc def" | cut -d':' -f2 abc def 필드 구분자가 없을 경우에 행 전체를 출력하는 것이 아니라 아예 아무것도 출력하지 않도록 하려면 -s 옵션을 추가해 준다. # 대상 문자열에 필드 구분자가 없는 경우, 출력하지 않음(-s