안녕하세요. 이번 시간에는 리눅스 passwd 명령어를 알아보겠습니다. 먼저 cho2 유저를 추가합니다. useradd -m cho2를 입력하면 cho2의 홈 디렉토리도 같이 생성합니다. passwd 명령어는 유저의 패스워드를 변경하는 명령어입니다. root의 비밀번호를 설정할 때에는 passwd만 입력하고 비밀번호를 재설정하면 됩니다. 생각보다 리눅스 초기 설정할 때 많이 쓰이게 되니 알아두면 좋습니다. cho2의 암호를 설정해 보겠습니다. 다음에 su cho2를 입력합니다. 암호를 입력하면, 다른 쉘이 하나 뜨게 됩니다. whoami를 입력하면, 현재 접속하고 있는 유저를 알려주는데요. cho2라고 되어 있습니다. cho2로 로그인을 성공했습니다. 여기서 끝나면 뭔가 섭섭할 거 같으니, 다른 작업을 ..
OS 검색 결과
리눅스 시스템 프로그래밍이나, 혹은 c언어 시간에 signal은 잠깐 접해볼 기회가 있을 겁니다. 이 글에서는 signal 함수를 쓰고 있습니다만, 실습으로만 쓰고 있다는 점 참고 부탁드립니다. sigaction 쓰세요. signal이 들어오면 처리하는 방법은 몇 가지가 있습니다. 그냥 아무 로직도 태우지 않거나, 무시하거나, 혹은 해당 시그널이 발생했을 때 잡아서 특정 루틴을 수행하던지. 그런데, 이 중 몇 가지 예외가 있는데요. 무시하거나 잡을 수 없는 signal이 두 개 있어요. SIGKILL과 SIGSTOP. 이 둘을 간단하게 보도록 하겠습니다. 먼저, SIGINT, SIGKILL, SIGSTOP, SIGTSTP 이렇게 4개의 signal 번호를 얻어봅시다. 제 시스템에서는 2, 9, 19, 2..
리눅스에는 foreground process, background process가 있습니다. foreground process를 백그라운드로 돌게, background process를 foreground로 돌게 바꾸는 방법을 알아봅시다. 먼저, foreground process입니다. sleep 100을 치면, 해당 terminal에서 100초동안 멈춰 있어요. 여기까지 정리해 봅시다. 제가 sleep 100을 터미널 tty1에서 입력하였습니다. 그러면, tty1과 sleep 100을 실행시킨 프로세스는 연결되어 있고, 100초가 지날 때 까지 유저와 커뮤니케이션을 하게 됩니다. 뒤에 &를 붙이면 어떻게 될까요? sleep 100 &을 했는데도, 멈춰 있지 않습니다. sleep 100을 백그라운드로 실행..
ps로 프로세스가 어떤 쓰레드들을 물고 있는지 이 글에 작성했던 적이 있었습니다. 이것을 pstree로 보는 방법을 알아보겠습니다. 테스트용 프로그램은 위와 같습니다. 간단하게 Thread 3개를 생성하고 돌립니다. 쓰레드는 계속 루프를 돌 겁니다. python3 1.py를 입력하면, 프로세스 하나에 Thread 4개가 돌고 있을 겁니다. 메인 쓰레드 하나랑, for loop에서 생성된 쓰레드 3개. ps -aL을 입력해 봅시다. 그러면, PID랑 LWP가 나옵니다. 여기서, LWP는 Light Weight Process의 줄임말입니다. 경량 프로세스, 즉 쓰레드라는 것입니다. 쭉 내려보시면, python3이라는 것이 보입니다. PID가 57273이고, LWP가 57273, 57274, 57275, 57..
stdio.h에는 rename 함수가 있습니다. 파일 이름을 바꿀 때 쓰는 함수입니다. 이 예제에서는 race condition을 생각하지 않도록 하겠습니다. 제 시스템은 아래와 같습니다. 먼저, rename의 1번째 인자는 oldpath, 2번째 인자는 newpath입니다. 이 예제에서는 old가 a.txt이고, new가 A.txt입니다. 이는, a.txt라는 이름을 가진 파일을 A.txt로 바꾼다는 의미입니다. 성공하면 0을, 실패하면 0이 아닌 값을 돌려줍니다. a.txt에 12345라는 내용을 넣어보겠습니다. echo 12345 > a.txt를 하면 매우 간단하게 됩니다. 다음에, a.txt의 내용을 출력해 봅시다. 그랬더니 12345가 나왔습니다. 이제 제가 만든 프로그램인 re.c를 컴파일해서..
최근댓글