프로그래밍/리눅스23 [리눅스] 컴파일을 위한 Makefile - 간단 예제 simple example linux 에서 C언어 컴파일 Hello World 란 문자를 출력하는 test.c 파일을 생성합니다. test.c #include void main (void) { printf ("hello world!\n"); return; } 이 파일을 실행하기 위해서는 우선 파일을 컴파일하고 결과로 나온 오브젝트 파일을 묶어서 실행파일을 만들어야 합니니다. gcc 명령을 이용해서 한다면 다음과 같습니다. 간단한 Makefile 예제 위에 예제로 사용한 test.c 파일을 컴파일하는 Makefile 입니다. ㅠㅠ 복잡해보입니다. 간단한 test.c 파일 하나 컴파일하는데 Makefile 양이 더 많네요..ㅎㅎ 하지만 프로그램을 만들다보면 소스파일도 많아지고, 라이브러리도 가져다쓰고 하게되는데 이럴 때는 Makefi.. 2020. 12. 2. [리눅스] linux 에서 listen하고 있는 port 확인하는 4가지 방법 리눅스에서 데몬 혹은 어플리케이션이 listen 하고 있는 port 를 확인하는 방법에 대해 알아보겠습니다. (참고) port 의 상태는 open, filtered, closed, unfiltered 가 있습니다. 1. Netstat Netstat 는 Linux 네트워킹 시스템에 대한 정보를 확인하는데 사용되는 도구입니다. 아래와 같이 open되어있는 모든 port를 확인하는데 사용할 수 있습니다. -l 옵션 : netstat에 모든 수신 소켓을 표시한다. -t 옵션 : 모든 TCP 연결을 표시한다. -u 옵션 : 모든 UDP 연결을 표시한다. -p 옵션 : 포트에서 수신하는 어플리케이션/데몬의 이름을 표시한다. -n 옵션 : 서비스 이름 대신 port 번호를 표시한다. sudo netstat -ltup.. 2020. 11. 30. [리눅스] sftp 자동화 스크립트 - sshpass sftp 명령어는 리눅스 환경에서 파일 전송용으로 자주 사용되고 있습니다. 파일 전송이 자주 있는 경우에는 script 를 사용해서 자동하여 사용하는 방법이 실수도 줄일 수 있고 아주 간편하게 사용할 수 있는 장점이 있습니다. sshpass 를 이용하여 sftp 파일전송 script 를 만들어보도록 하겠습니다. sftp 자동화 스크립트 간단 예제 아래 script 는 10.200.3.3 서버에 jungfo 라는 ID 로 접속하여 test_files.txt 를 다운받는 간단한 예제입니다. 실행 결과 - test_file.txt 를 전송받음. sftp 자동화 스크립트 예제1 - 파일명 인자로 전달하기 간단 예제에 파일명을 파라미터로 입력받는 부분을 추가했습니다. 이제 script 뒤에 원하는 파일명을 입력하.. 2020. 11. 30. [리눅스] sshpass download 및 install sftp 나 ssh 기반의 명령어를 사용할 때 password 를 항상 입력해야하는 것이 번거로울 수 있습니다. sshpass 는 파라미터나 파일을 통해 입력받은 암호를 이용하여 쉽게 ssh 를 연결할 수 있고, 응용한다면 batch 파일이나 script 를 통해 다음 명령어도 수행할 수 있습니다. ssh 기반 명령어의 자동화에 아주 유용합니다. 이번 포스팅은 sshpass 명령이 없는 경우 source 코드를 다운받아서 설치하는 과정을 간단하게 설명드리겠습니다. sshpass download 사이트 sourceforge.net/projects/sshpass/ Non-interactive ssh password auth Download Non-interactive ssh password auth for .. 2020. 11. 30. [리눅스] hostname, 호스트명 변경 방법 리눅스 머신은 각각의 구분을 쉽게하기 위하여 호스트명을 사용합니다. 보통은 리눅스 설치 시에 설정하게 되는데 설치 후 hostname 을 변경하는 법을 알아보겠습니다. * 현재 hostname 확인 - hostname hostname 명령을 이용하여 현재 hostname 이 "jungfo-X10SRA-F" 로 설정된 것을 확인. * 원하는 hostname 으로 변경 - hostname [호스트명] hostname jungfo 명령을 이용하여 호스트명을 "jungfo" 로 변경. * /etc/hostname 파일 변경 - vi /etc/hostname 바뀐 호스트명은 reboot 후에는 다시 원복될 수 있으므로 /etc/hostname 파일을 수정. 이렇게 수정해 주면 reboot 후에도 설정한 hostn.. 2020. 11. 27. [리눅스] hostname 오류 "unable to resolve host" 해결 방법 unable to resolve host 리눅스에서 관리자 권한을 필요로 할 때 sudo 명령을 사용합니다. sudo 명령을 이용해서 root 로 권한으로 명령어를 수행할 때 가끔 "unable to resolve host jungfo" 이란 오류가 발생하는 경우가 있습니다. 보통은 hostname 을 변경한 경우에 많이 발생하는데 해결 방법은 의외로 간단합니다. 현재 설정된 호스트명을 확인 - cat /etc/hosts 역시 호스트명 리스트에 제가 사용하는 hostname 이 없네요. 간단하게 저의 hostname 만 추가해주면 됩니다. 호스트명 추가 - vi /etc/hosts /etc/hosts 파일을 열어서 "127.0.0.1 localhost" 부분을 복사해서 한 줄 추가하고 "localhost.. 2020. 11. 27. [C언어] 시간 차이 구하는 방법 - difftime 간단 예제 시간 차이 구하는 간단 예제 사용하는 API 는 아래와 같습니다. difftime() double difftime(time_t time2, time_t time1); - 인자로 받은 두 시간의 차이를 구해 return한다. mktime() time_t mktime(struct tm* timeptr); - 인자로 받은 tm struct 를 time_t 형으로 변환한다. strftime() - debug print 용으로 사용. size_t strftime(char *s, size_t maxsize, const char *format, const struct tm * timeptr); - tm struct 로 포맷화 된 문자열을 만드는 함수. [C언어] time 사용법 - 시간 출력 포맷, 시간 / 문자열 .. 2020. 11. 16. [C언어] time 사용법 - 시간 출력 포맷, 시간 / 문자열 변환 시간 출력 (년월일, 시분초) 시간 출력에 관련한 simple example 을 공유합니다. 예제에 사용된 함수는 아래와 같습니다. time() time_t time(time_t *timeptr) - 인자에 NULL 을 넘길 경우, 현재까지의 시간을 초 단위로 반환함. localtime() struct tm *localtime(const time_t *timeval); - 초 단위 시간을 tm struct 에 담아서 반환. (년월일시분초 포맷화) strptime() char *strptime(const char *s, const char *format, struct tm *tm); - 시간 문자열을 tm struct 로 변환하는 함수. strftime() size_t strftime(char *s, si.. 2020. 11. 16. [svn 오류] svn cleanup 오류 발생 시 해결방법 svn 을 사용하다보면 예상하지 않는 오류가 발생하는 경우가 있습니다. 그럴 때 자주 사용하는 명령어가 바로 svn cleanup 인데, svn cleanup 조차 제대로 실행되지 않는 경우가 발생할 수 있습니다. 보통은 하기와 같은 오류 메시지와 함께 cleanup 에 실패합니다. Failed to run the WC DB work queue associated with file 위와 같은 오류 메시지가 보인다면 하기와 같은 명령으로 오류를 해결할 수 있습니다. cd {work-dir-base} // .svn 디렉토리가 존재하는 위치로 이동. sqlite3 .svn/wc.db "delete from work_queue" 위 명령으로 svn cleanup 이 정상적으로 되었다면 이제 원래 디렉토리로 돌아.. 2020. 11. 4. [리눅스/ftp 오류] 500 Illegal PORT command. 500 Illegal PORT command 리눅스에서 ftp 접속은 성공적으로 연결되었는데 그 후 명령 수행 시 "500 Illegal PORT command." 오류가 발생할 경우가 있다. 이렇게 오류가 발생할 경우 어떤 명령도 수행되지 않고 같은 오류만 계속해서 반복됩니다. [jungfo] ftp 122.199.255.2 Connected to 122.199.255.2. 220 (vsFTPd 3.0.3) Name (122.199.255.2:jungfo): vosadmin 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files... 2020. 10. 30. [리눅스/명령어] date 사용법 - 로컬 시간 바꾸기, 시스템 시간 변경 리눅스 시스템의 시간을 설정할 때 보통은 타임서버를 이용해서 설정한다. ntpd 혹은 ntpdate 를 이용해서 변경하는 방법이 가장 일반적입니다. 지속적으로 유지할 시간을 바꾸는 경우라면 ntpd 를 이용하기를 권해드립니다. 하지만, 특수한 환경에 의해 외부 time 서버와 연결이 안 되는 환경이거나 혹은 시험용으로 원하는 시간으로 즉시 바꾸기를 원하는 경우에는 date 명령어를 사용해서 손쉽게 시스템 시간을 변경할 수 있습니다. 1. 현재 시간 수동 변경 간단한 예제 root:~# date -s "2020-10-27 16:38:00" 1027 16:38:00 KST 2020 2. 현재 시간 확인 예제 - date 출력 형식 root:~# date 2020. 10. 27. (화) 17:15:26 KST.. 2020. 10. 27. 이전 1 2 다음