| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- bash
- vm
- ssh
- AZRUE
- ubuntu20.04
- dash
- strace
- gcc
- 시스템콜
- Child
- 상대경로
- 커널
- NXP
- sudo
- ubuntu
- yocto
- Go
- linux
- Git
- system programming
- SSH 에러
- netstat
- Parent
- APT
- MAN
- system call
- repo
- g++
- 소스트리
- Docker
- Today
- Total
목록Linux (8)
devsojang 님의 블로그
쉘 스크립트에서 상대경로는 항상조심해야 합니다. 문제가 없는 스크립트인데 갑자기 에러가 발생을 합니다. 대략난감이죠 ~ WHY ??? 한가지 예로 다음과 같은 경우가 있습니다. " ~ " 는 쉘에서 사용자의 홈 디렉토리를 의미합니다. 하지만 이건 쉘이 직접 해석할 때만 적용됩니다. PATH 변수에 " ~ " 사용한 경우 스크립트에서 해석하지 못하는 경우가 발생합니다. 터미널에서 분명히 잘 사용되는 명령어인데 스크립트에서는 해당 명령에 대해서 "Command not found" 메세지를 출력합니다. 스크립트 내부에서 사용한다면, 해석되지 않고 경로를 찾지 못해 오류가 발생한 것입니다. 스크립트 내부에서 제대로 사용하려면 $HOME 변수를 사용하거나 절대경로를 사용하면 됩니다. 변수를 확실하게 사..
임베디드 개발을 하다보면 실행해야 하는 script가 bash로 만들어진 것들이 많이 있습니다.메뉴얼 대로 실행을 했는데 에러가 뜨면 난감한 상황이 발생하죠.ubuntu 환경의 기본쉘은 dash !!!의외로 bash로 착각하시는 분들이 많아요 ~ bash로 변경해 보도록 해보겠습니다. 다음 명령어를 실행합니다. # ls -al /bin/sh dash -> bash 로 변경하기 위한 다음 명령을 실행합니다. # sudo dpkg-reconfigure dash No를 선택합니다. 다시 다음 명령어를 실행해 봅니다.# ls -al /bin/sh bash로 변경된 것을 확인할 수 있습니다. 그럼 즐거운 개발 하세요 !!!
fork 함수란? fork 함수의 원형은 다음과 같다.#include pid_t fork(void); fork 함수는 Linux man에서 다음과 같이 정의한다.fork - create a child process child process를 생성한다그렇다. Linux에서는 fork 함수를 이용해서 process를 생성한다.이때 호출을 하는 process는 parent process가 되고 , 생성된 process는 child process가 된다.이때 parent process의 메모리 이미지를 새로운 메모리 영역에 복사하여 child process에서 사용할 수 있게한다. fork를 호출한 시점 이후 부터는 parent, child 각각의 메모리 영역에서 실행된다. #include #include ..
ubuntu 20.04의 기본 gcc/g++은 9 버전입니다. 기존에 구축한 환경을 유지하기 위해 대부분 ubuntu를 업그레이드 하지 않고 쓰는 경우가 많습니다. 그러나 세월이 흘러 여러 설치 패키지들과 빌드 하는 여러가지 소스코드들도 버전 업을 하게 됩니다. 이런 과정에서 gcc/g++ 의 상위 버전을 요구하는 경우가 발생합니다. 그렇다면 gcc/g++ 10을 설치해 보도록 하겠습니다. 다음 명령어를 통해 설치합니다. $ sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa$ sudo apt update$ sudo apt install g++-10 update-alternatives를 사용해서 gcc 버전을 선택할수 있도록 설정합니다. $ sudo update-..
Ubuntu 와 Debian 에서 openssh-server 설치하는 법은 다음과 같습니다. ssh 설치 $ sudo apt install openssh-server ssh 시작 및 활성화 $ sudo systemctl start sshd$ sudo systemctl enable sshd ssh 서비스 상태 확인$ sudo systemctl status sshd ssh 포트 (기본값 22) 확인 하는 법$ netstat -tuln | grep 22 ssh 비밀번호 인증 사용 여부 확인 하는 법 $ sudo cat /etc/ssh/sshd_config | grep PasswordAuthentication port 22: Connection refused 해결책$ sudo nano /etc/ssh..
2025.01.18 - [Linux] - System Call 이란 ? System Call 이란 ?System Call프로세스가 커널에 처리를 요청하는 방법입니다.사용자모드에서 실행중인 프로세스가 시스템 콜을 호출하면 CPU에서 예외(exception)가 발생되고 CPU 모드가 사용자 모드에서 커널모드로 devsojang.tistory.com Linux 시스템 상에서 프로세스가 어떤 System Call을 호출하는지 strace 명령어를 통해서 확인할 수 있습니다. devsojang.go 파일을 사용해서 테스트 해보도록 하겠습니다.package mainimport ( "fmt")fun main() { fmt.Println(" devsojang ~ !!")} 빌드를 합니다. $ go build de..
Linux 를 설치 후에 가장 먼저 해야 할일은 root 계정 활성화입니다. 기본적으로 처음 설치한 계정만 존재하기 때문에 root 계정을 따로 활성화 시켜야 합니다. $ sudo passwd root 새로운 비번 확인 비번을 설정하면 됩니다. Linux 에서 root 계정을 활성화 하는 이유는 다음과 같습니다. 일부 시스템 관리는 root 권한이 필요 특정 소프트웨어 설치 및 시스템 업데이트에 root 권한이 필요시스템 보안 설정 변경 시 root 권한 필요하드웨어 설정 변경 시 root 권한 필요root 계정은 위와 같이 필요한 작업에만 사용하고 일반 작업에서는 sudo 명령어를 통해 필요한 경우에만 root 권한을 얻어서 사용하는 것이 가장 안정적인 방법입니다.
System Call프로세스가 커널에 처리를 요청하는 방법입니다.사용자모드에서 실행중인 프로세스가 시스템 콜을 호출하면 CPU에서 예외(exception)가 발생되고 CPU 모드가 사용자 모드에서 커널모드로 변경이 된다.커널모드에서 작업이 완료되면 해당 프로세스로 복귀하며 CPU 모드는 다시 사용자 모드로 변경이 된다. 다음과 같은 시스템 콜이 있습니다.프로세스 생성, 삭제메모리 확보, 해제통신 처리파일 시스템 조작장치 조작시스템 콜을 통하지 않고 프로세스에서 직접 CPU 모드를 변경하는 방법은 존재하지 않습니다.