반응형

안녕하세요. 가야태자 @talkit 입니다.

궁극적으로 하려고 하는 것은 Mattermost라는 Slack 대체 프로그램에 TLS 기반의 SSL을 도입하게 하는 것입니다.

그전에 NGINX를 잘 몰라서 설치해보고, SSL을 어떻게 구성하는지를 좀 알아보고 다시 Mattermost를 손을 대야 할 것 같습니다.

웹서버는?

웹서버는 간단하게 정의하자면 웹을 서비스하는 서버 입니다. 저희가 http 또는 https로 시작하는 주소를 입력하면 브라우져에서 여러 화면들을 확인하게 되는데, 그 주소에 웹서버가 있기 때문입니다.

그런데, 저는 Apache Web Server 주로 사용하는 사람입니다. 하지만, 그렇다고, 블로그에 아파치를 설치하는 방법을 적은 적이 없네요 ^^ 앞으로는 적도록 하겠습니다.

https://httpd.apache.org/

아파치 웹서버는 위 URL에서 정보를 확인하고 다운로드 할 수 있습니다.

물론 Ubuntu에서 기본 패키지로 제공하기 때문에 금방 설치할 수 있습니다.

이번에 적으려고 하는 NGINX도 웹서버의 일종입니다. Apache 보다는 좀 더 뒤에 나온 제품이어서 좀 더 신선한 기능들을 제공하긴 하지만, 서로 경쟁 관계여서 요즘은 NGINX가 좀 더 점유율을 가져가고 있다고 알고 있습니다. ^^ 서로를 보고 보완을 하고 있는 것으로 알고 있습니다.

W3Techs - extensive and reliable web technology surveys 출처 : https://w3techs.com/

위에서 보시다 싶이 NGIX가 1.1% 정도 우위를 점유하고 있습니다.

NGINX의 공식 웹사이트는 https://nginx.org/en/ 에서 확인할 수 있습니다.

우리는 우분투 리눅스에 오늘 NGINX를 설치할 것입니다. ^^

우분투 리눅스 설치.

리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install https://talkit.tistory.com/677

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637

위두 글을 이용해서 VMWARE에 리눅스를 설치 하십시오.

Putty 로 리눅스에 접속하기

[무료소프트웨어] 무료 보안쉘 클라이언트 PuTTY 최신 버전 다운로드 및 설치하기. How to Install the latest version PuTTY that is free Secure Shell Client. https://talkit.tistory.com/674

리눅스/Linux 오라클 VPS에 접속해보자. How to connect to free VPS on Oracle Cloud. https://talkit.tistory.com/673

리눅스/Linux SSH를 통해서 VMWARE Linux에 접속해보자. How to connect to Linux on VMWARE via SSH https://talkit.tistory.com/688

리눅스에 접속하시는 방법은 위 글들에서 설명해 두었습니다. 참고해서 접속하시면 될 것 같습니다.

리눅스에 NGINX 설치

저는 계속 Putty러 접속을 합니다.

여러분들이 VMWARE에 우분투를 설치하셨거나, 우분투 리눅스 VPS를 하나 가지고 계시거나 하다는 전제 하에서 이 글은 시작 하고 있습니다.

리눅스에 접속하기

서버에 우선 접속하십시오.

Putty를 여시고 저기 주소에 입력하시거나 아래에 있는 저장된 세션에서 선택해서 접속 하시면 됩니다.

login as: talkit
talkit@192.168.0.27's password:
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.15.0-56-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 updates can be applied immediately.

Your Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Thu Dec 29 23:51:08 2022 from 192.168.0.3
talkit@ubuntu:~$ ps -ef | grep nginx
talkit      2021    2007  0 23:50 pts/0    00:00:00 grep --color=auto nginx
talkit@ubuntu:~$

저는 잘 접속이 되었구요.

접속해서 ps로 nginx가 없는 것 까지 확인 했습니다. 제가 Mattermost를 설치하면서 nginx도 설치 했거든요 ^^

nginx 설치 이전으로 VMWARE파일을 돌려 놨습니다.

NGINX 설치하기

그 다음 과정을 계속 진행 하겠습니다.

sudo apt update

위 명령어는 옵셔널 이긴 하지만 한번씩 해주는 것이 좋습니다.

sudo apt install nginx

NGINX 설치는 정말 간단합니다. ^^

 sudo apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream
  nginx-common nginx-core
Suggested packages:
  fcgiwrap nginx-doc
The following NEW packages will be installed:
  libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream
  nginx nginx-common nginx-core
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 605 kB of archives.
After this operation, 2,141 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 nginx-common all 1.18.0-0ubuntu1.4                                                                                                                                                                                                                        [37.7 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-http-image-filter amd6                                                                                                                                                                                                                       4 1.18.0-0ubuntu1.4 [14.8 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-http-xslt-filter amd64                                                                                                                                                                                                                        1.18.0-0ubuntu1.4 [13.0 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-mail amd64 1.18.0-0ubu                                                                                                                                                                                                                       ntu1.4 [42.9 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-stream amd64 1.18.0-0u                                                                                                                                                                                                                       buntu1.4 [67.4 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 nginx-core amd64 1.18.0-0ubuntu1.4                                                                                                                                                                                                                        [425 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 nginx all 1.18.0-0ubuntu1.4 [3,620                                                                                                                                                                                                                        B]
Fetched 605 kB in 2s (293 kB/s)
Preconfiguring packages ...
Selecting previously unselected package nginx-common.
(Reading database ... 160070 files and directories currently installed.)
Preparing to unpack .../0-nginx-common_1.18.0-0ubuntu1.4_all.deb ...
Unpacking nginx-common (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-http-image-filter.
Preparing to unpack .../1-libnginx-mod-http-image-filter_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-http-image-filter (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-http-xslt-filter.
Preparing to unpack .../2-libnginx-mod-http-xslt-filter_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-http-xslt-filter (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-mail.
Preparing to unpack .../3-libnginx-mod-mail_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-mail (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-stream.
Preparing to unpack .../4-libnginx-mod-stream_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-stream (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package nginx-core.
Preparing to unpack .../5-nginx-core_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking nginx-core (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package nginx.
Preparing to unpack .../6-nginx_1.18.0-0ubuntu1.4_all.deb ...
Unpacking nginx (1.18.0-0ubuntu1.4) ...
Setting up nginx-common (1.18.0-0ubuntu1.4) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.                                                                                                                                                                                                                       service.
Setting up libnginx-mod-http-xslt-filter (1.18.0-0ubuntu1.4) ...
Setting up libnginx-mod-mail (1.18.0-0ubuntu1.4) ...
Setting up libnginx-mod-http-image-filter (1.18.0-0ubuntu1.4) ...
Setting up libnginx-mod-stream (1.18.0-0ubuntu1.4) ...
Setting up nginx-core (1.18.0-0ubuntu1.4) ...
Setting up nginx (1.18.0-0ubuntu1.4) ...
Processing triggers for systemd (245.4-4ubuntu3.19) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for ufw (0.36-6ubuntu1) ...
talkit@ubuntu:~$

중간에 Y 한번만 눌러 주시면 됩니다.

 sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-12-31 23:56:28 PST; 51s ago
       Docs: man:nginx(8)
   Main PID: 2701 (nginx)
      Tasks: 17 (limit: 19071)
     Memory: 13.8M
     CGroup: /system.slice/nginx.service
             ├─2701 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─2702 nginx: worker process
             ├─2703 nginx: worker process
             ├─2704 nginx: worker process
             ├─2705 nginx: worker process
             ├─2706 nginx: worker process
             ├─2707 nginx: worker process
             ├─2708 nginx: worker process
             ├─2709 nginx: worker process
             ├─2710 nginx: worker process
             ├─2711 nginx: worker process
             ├─2712 nginx: worker process
             ├─2713 nginx: worker process
             ├─2714 nginx: worker process
             ├─2715 nginx: worker process
             ├─2716 nginx: worker process
             └─2717 nginx: worker process

Dec 31 23:56:28 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 31 23:56:28 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

리눅스 서비스를 확인하면 이미 nginx가 활성화 되어 있는 상태 입니다. ^^

방화벽 설정 - 생략

방화벽 관련 설정도 있지만 방화벽 설정은 안해서 ^^

웹서버에 브라우져로 접속해 보기

웹서버가 켜져 있는걸 확인 했으니까 브라우져로 접속을 해보겠습니다.

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

잘 설치 되었다고 뜨네요 ^^

기본적으로 여기까지하면 웹서버가 설치 되었습니다. 

다음에는 웹서버의 웹 문서들을 어디에 놓을 건지에 대해서 말씀 드리겠습니다. 

감사합니다. 

 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

vi/vim 관련 글을 안쓴줄 알았더니 ^^ 이제 3년 전이네요 20년도에 vi 관련글을 적었습니다. 

그것도 열고 닫는 것만요 ^^

리눅스/Linux 편집기를 사용해보자 vi/vim 열고(Open) 닫기(Close) https://talkit.tistory.com/591

해당글은 위글을 참조하시면 도움이 될껍니다. 다시 한번 해보도록 하겠습니다. 

vi를 전문적으로 다룰 것이 아니어서 일단, 파일을 열고 또는 새파일을 만들고, 저장하고, 편집하기 위한 명령어들을 알려 드리겠습니다. 

일반적으로 윈도우즈의 편집기들은 문장의 줄이나 칸을 이동할때 화살표키를 이용합니다.

그런데, vi는 화살표가 되는 버전도 있지만 전통 적으로는 다른 키를 이용 합니다. 

k - 위로 이동(↑)
j - 아래로 이동(↓) 
l - 우측으로 이동(→)
h - 좌측으로 이동(←)

화살표로도 가능 합니다. 그런데 사용하시다 보면, hjkl의 조합이 얼마나 편한지 느껴 지실 겁니다. ^^

이유는 화살표키로 가지 않아도 바로 이동할 수 있기 때문입니다. 

vi 모드를 익히셔야 합니다. 

여러가지 모드가 있는 것으로 알고 있는데 저는 두가지만 설명 드리겠습니다. 

Esc 모드와 INSERT 모드 입니다. 

Esc 모드 - 모든 작업을 하다가 <Esc>키를 누르면 Esc 모드로 이동한다. 검색이나, 이동등을 위한 모드 이다.
INSERT 모드 - <i><o><O>키 중 하나를 누르면 사용가능한 편집 모드 입니다. 
             <i> - 입력한 자리 부터 편집을 할 수 있다. 
             <o> - 입력한 자리 한줄 아래에 새로운 줄을 만들고 편집을 할 수 있다. 
             <O> - 입력한 자리 한줄 위에 새로운 줄을 만들고 편집을 할 수 있다.
             
언제든지 <Esc>키를 누르면 Esc 모드로 이동한다.

Esc 모드에서 제가 사용하는 법을 바로 보여 드리겠습니다. 

위 동영상에서 잘 보실 수 있을 겁니다. 그리고 실제로 해보시기를 권합니다. ^^

글의 주제가 글을 쓰는 주제라서 이제 글쓰기를 알려 드리겠습니다. 

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

자 이제 실제로 한번 vi 로 입력해 보겠습니다. 내용은 애국가 1절 위의 내용을 입력하시는 걸로 하겠습니다. ^^

vi 애국가.txt

애국가 파일을 만들겠습니다. 

하면 빈 파일의 애국가.txt가 만들어지고 Esc 모드로 있을 겁니다. 

우리는 INSERT 모드로 변경을 해야 합니다. 

위에서 <i>를 누르면 현재 위치에서 편집을 할 수 있는 모드로 간다고 했습니다. 

동상이 잘 안만들어 지네요 T.T 위에는 잘 만들어 졌는데 말이죠.

그럼 해보겠습니다. 

일단 애국가.txt가 없다고 생각하고

위 명령어를 리눅스 쉘상에서 내려 주십시오.

<i>키를 입력하고 애국가 1절을 입력해보십시오.

위의 글을 복사하셔서 <i> 키 누르고 마우스 오른쪽 키를 누르셔도 됩니다. 

연습해보신다고 생각하셔 하나하나 치셔도 됩니다. 

방법은 어떻게든 애국가 1절을 모두 입력해 보십시오 ^^

그리고, 모두 입력 하셨으면 Esc 모드로 빠져 나가기위해서 <Esc>키를 누르시고 

:wq 를 입력합니다. 

제가 가끔 설명하면서 쳤던 그 명령어입니다. 

w가 쓰기 q가 문서 나가기 입니다. ^^

그러면 최초로(?) 리눅스에서 문서를 하나 만드셨네요. 물론 최초는 아시겠지만요.

이제 만드셨으면, 2절을 입력해 보겠습니다. 추가로요 ^^

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

2절을 vi에서 입력하기 위해서 또 여셔야겠지요 ^^

vi 애국가.txt

명령어는 동일 합니다. 

다른점은 여셨을때 비어 있었다면, 지금은 1절이 입력 되어 있습니다. 

자 화살표 키로 입력 하셔도 되겠지만 hjkl을 이용해서 맨 마지막줄로 이동해 주십시오 

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~

아까 잘 따라 하셨으면 vi로 열었을때 저정도가 나올껍니다. 내용은 솔직히 애국가 1절이 아니어도 상관 없습니다. 

j 4번 누르셨나요?

방법은 두가지 입니다. i를 누르시고 화살표로 맨 마지막으로 이동하신 다음에 엔터를 친다. 이게 첫번째 방법이고

소문자 o키를 누른다가 두번째 방법입니다. 왜냐면 저기 보전하세 다음 줄에 ^^ 넣어야 하니까요.

한글일때는 당황하지 마시고 한영키를 누르셔서 o키를 누르시면 됩니다. ^^

엔터를 한번 치겠습니다. 1절과 구분하기 위해서 요

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~
~
~

아마도 여러분의 화면에는 이 비슷한 화면이 떠 있을 겁니다. 

그럼 이제 저장하고 나가 보십시오.

<Esc>  누르고, :wq 누르셨지요?

이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

이번에는 동일한 과정을 거쳐서 4절을 입력해보겠습니다. 

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~
~
~
~
~

설명은 일부러 안드렸습니다. 잘 따라 하셨을 꺼라고 생각 됩니다. ^^

오늘 위에서 설명 드린 것은 다 설명 드리고 끝내려고 합니다. ^^

제가 일부러 이렇게 했습니다. ^^

1절

2절

4절

이 있네요 앗 3절을 입력을 안했습니다. 

중간에 끼워 넣으면 되지요 너무 걱정 안하셔도 됩니다. ^^

가을 하늘 공활한데 높고 구름 없이
밝은 달은 우리 가슴 일편단심일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

자 어떻게 해야 할까요?

방법은 여기서도 2가지 정도가 있습니다. 

첫번째로 hjkl을 잘 이용해서 2절의 마지막 보전하세 가 있는 줄로 갑니다. 

그리고 소문자 o키를 누르시면 됩니다. ^^ 이게 첫번째구요.

여기서 대문자 O도 사용하셔야지요 ^^

2절의 보전하세 다음줄로 갑니다. ^^ 빈줄이죠 ^^

빈줄에서 대문자 O를 눌러 보십시오.

비디오 녹화를 잘 익혀서 ^^ 이런건 비디로로 보여 드리면 좋을 것 같습니다. ^^

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

가을 하늘 공활한데 높고 구름 없이
밝은 달은 우리 가슴 일편단심일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~
~
~

여기까지 잘 따라 하셨을 것으로 믿습니다. 

오늘은 글쓰기 였고, 입력만 있는 글 쓰기였습니다. 다음 vi에서는 글을 수정하는 방법을 알려드리겠습니다. 

지금도 일종의 수정을 하셨지만, 줄을 지우거나, ^^ 글자를 지우기도 해야 하지 않겠습니까 ^^

감사합니다. 

 

반응형
반응형

두서 없이 요즘 리눅스에 관한 글을 조금식 작성하고 있습니다. 

 

지난 번 글에서는 리눅스를 윈도우에 설치하는 법을 적었습니다. 

 

오늘은 리눅스 편집기에 대해서 적도록 하겟습니다. 

 

리눅스에는 정말 강력한 vim 이라는 편집기가 있습니다. 

 

vim 은 상용 편집기인 vi를 리눅스에서 무료로 사용할 수 있도록 구현한 편집기 입니다. 

 

지금은 도스, 윈도우즈용도 나와 있습니다. 

리눅스에서는 vi도 vim이 열립니다. ^^

vi [파일명]

vi로 파일을 열어 보시려면 위와 같이 하면 됩니다. 파일명이 옵셔널인 이유는 처음 파일을 만드실때는 파일명 없이도 열 수 있습니다. 한번 해보겠습니다. 

vi ftpserver.txt
FTP 전송을 위한 파일 준비

이렇게 내용이 잘 나옵니다. ^^

이제는 닫아 보겠습니다. 

<Esc>키를 습관적으로 한번 누르십시오.

열자마자 닫는거라 안여서도 되지만요 ^^

:q

아무 수정도 안하셨다면 위와 같이 하면 빠져 나옵니다. 

:q!

빠저나오는데 뭔가 수정 된게 있어서 안된다고 하면 !를 하나 더 넣으십시오 ^^

그리고 수정 내용을 저장 하셔야 되면

:wq

w 명령어를 넣으시면 됩니다. 

오늘은 진짜로 열고 다는 법만 알려 드렸습니다. ^^

-R                   Readonly mode (like "view")

vi의 옵션중에 -R 옵션이나 명령어 중에 view는 그냥 문서를 열어서 편집이 안되도록 하는 것입니다. 

알아두면 좋을 것 같습니다. 

vi -R ftpserver1.txt
FTP 전송을 위한 파일 준비
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"ftpserver.txt" [readonly] 1 line, 35 characters

실제로 열어 보면 위와 같이 나옵니다. readonly 보이시죠 ^^

view ftpserver.txt
FTP 전송을 위한 파일 준비
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"ftpserver.txt" [readonly] 1L, 35C

view로 열어도 동일한 효과 입니다.

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 리눅스의 백그라운드 서비스에 대해서 알아 보겠습니다. 

위 그림은 리눅스가 아니라 ^^ 윈도우즈 서비스 관리 콘솔입니다. ^^

리눅스에도 저런 아이가 있을까 해서 찾아 봤는데 ^^ 없네요 T.T 

그래서 리눅스 서비스를 서비스를 제공하는 systemd 라는 프로그램이 있습니다. 

그리고, systemd의 서비스를 관리할 수 있는 systemctl 이라는 프로그램이 있습니다. 

여기서 서비스는 여러분이 웹서버를 설치했을때 독립적인 데몬으로 관리할 수도 있겠지만, 리눅스가 관리하는 서비스로 만들수도 있습니다. 

요즘 제가 열심히 깔고 있는 MySQL 서버도 서비스로 운영할 수 있습니다. 

ubuntu에서는 서비스로 올려 두었습니다. 

systemctl start|stop|restart|status|enable|disable 서비스명[.service]

이렇게 관리할 수 있습니다. 

start는 서비스를 시작 합니다. 

stop은 서비스를 종료합니다. 

restart는 서비스를 재시작 합니다. 

status는 서비스의 상태를 확인해 줍니다. 

enable은 서비스가 서버나 컴퓨터가 재시작할때 자동으로 시작하게 해줍니다. 

disable는 서비스가 서버나 컴퓨터가 재시작할때 자동으로 시작 안됩니다. ^^

매뉴얼을 보시면 더다양한 명령어가 있지만 주로 사용하는 명령어는 저정도가 되겠습니다. 

지난 번에 설치한 mattermost 서비스를 종료해 보겠습니다. 

sudo systemctl stop mattermost

저렇게 하면 꺼집니다. ^^

sudo systemctl status mattermost

현재 상태를 보실 수 있습니다. 

 sudo systemctl stop mattermost
[sudo] password for talkit:
talkit@ubuntu:~$ sudo systemctl mattermost
Unknown operation mattermost.
talkit@ubuntu:~$ sudo systemctl status mattermost
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Fri 2022-12-30 19:33:44 PST; 1min 17s ago
    Process: 1430 ExecStart=/opt/mattermost/bin/mattermost (code=exited, status=0/SUCCESS)
   Main PID: 1430 (code=exited, status=0/SUCCESS)

Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.686 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.mattermost.nps","wrapped_extras":"pathplugins/com.mattermost.nps/server/dist/plugin-linux-amd64pid1709"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.686 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.github.matterpoll.matterpoll","wrapped_extras":"pathplugins/com.github.matterpoll.matterpoll/server/dist/plugin-linux-amd64pid166>
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.686 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"playbooks","wrapped_extras":"pathplugins/playbooks/server/dist/plugin-linux-amd64pid1749"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.687 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.mattermost.apps","wrapped_extras":"pathplugins/com.mattermost.apps/server/dist/plugin-linux-amd64pid1724"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.687 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"focalboard","wrapped_extras":"pathplugins/focalboard/server/dist/plugin-linux-amd64pid1762"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.690 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.mattermost.calls","wrapped_extras":"pathplugins/com.mattermost.calls/server/dist/plugin-linux-amd64pid1733"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.690 -08:00","level":"info","msg":"stopping websocket hub connections","caller":"platform/web_hub.go:121"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.697 -08:00","level":"info","msg":"Server stopped","caller":"app/server.go:764"}
Dec 30 19:33:44 ubuntu systemd[1]: mattermost.service: Succeeded.
Dec 30 19:33:44 ubuntu systemd[1]: Stopped Mattermost.

결과는 위와 같이 나오네요. Active inactive로 나옵니다. 

sudo systemctl start masttermost

서버를 켜고 다시 실행해보면요.

 sudo systemctl start mattermost
talkit@ubuntu:~$ sudo systemctl status mattermost
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-12-30 19:36:10 PST; 7s ago
   Main PID: 2059 (mattermost)
      Tasks: 109 (limit: 19071)
     Memory: 545.1M
     CGroup: /system.slice/mattermost.service
             ├─2059 /opt/mattermost/bin/mattermost
             ├─2086 plugins/com.mattermost.plugin-todo/server/dist/plugin-linux-amd64
             ├─2097 plugins/com.github.matterpoll.matterpoll/server/dist/plugin-linux-amd64
             ├─2110 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ├─2116 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
             ├─2125 plugins/com.mattermost.apps/server/dist/plugin-linux-amd64
             ├─2137 plugins/com.mattermost.calls/server/dist/plugin-linux-amd64
             ├─2148 plugins/playbooks/server/dist/plugin-linux-amd64
             └─2161 plugins/focalboard/server/dist/plugin-linux-amd64

Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.333 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifyMentions"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.333 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifySubscriptions"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.334 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifyLogger"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.341 -08:00","level":"info","msg":"FocalBoard Server","caller":"app/plugin_api.go:973","plugin_id":"focalboard","version":"7.5.4","edition":"plugin","build_number":"3697449214","build_date":"\"Wed Dec 14 18:04:06 UTC 2022\"","build_hash":"414>
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.341 -08:00","level":"info","msg":"Server.Start","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.350 -08:00","level":"info","msg":"Boards product successfully started.","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:36:10 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:10.429 -08:00","level":"info","msg":"Starting Server...","caller":"app/server.go:913"}
Dec 30 19:36:10 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:10.429 -08:00","level":"info","msg":"Server is listening on [::]:8065","caller":"app/server.go:985","address":"[::]:8065"}
Dec 30 19:36:10 ubuntu mattermost[2059]: {"timestamp":"

위와 같이 나옵니다. 저기 보시면 Active가 active(running)네요 ^^

sudo systemctl restart mattermost

서버의 설정을 바꾸고 껐다 켤때는 stop, start를 순서대로 실행해도 되지만 위와 같이 restart로 해결 가능 합니다. 

sudo sytemctl disable mattermost

지금 현재 mattermost가 자동으로 컴퓨터가 켜지면 실행 되도록 되어 있는데 ^^

그 기능을 껐습니다.  다시 켜 두도록 하겠습니다. 

sudo systemctl disable mattermost
Removed /etc/systemd/system/mysql.service.wants/mattermost.service.
# 서버를 껐다 켭니다. 
sudo shutdown -r now

# 접속하자 마자 상태를 확인 합니다. 
sudo systemctl status mattermost
[sudo] password for talkit:
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

# mattermost를 자동으로 켜게 만듭니다. 
sudo systemctl enable mattermost     

# 서버를 껐다 켭니다. 
sudo shutdown -r now


# 접속하자 마자 상태를 확인 합니다. 
sudo systemctl status mattermost

● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-12-30 19:45:17 PST; 1min 31s ago
   Main PID: 1418 (mattermost)
      Tasks: 114 (limit: 19071)
     Memory: 870.0M
     CGroup: /system.slice/mattermost.service
             ├─1418 /opt/mattermost/bin/mattermost
             ├─1653 plugins/com.mattermost.plugin-todo/server/dist/plugin-linux-amd64
             ├─1658 plugins/com.github.matterpoll.matterpoll/server/dist/plugin-linux-amd64
             ├─1677 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ├─1684 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
             ├─1695 plugins/com.mattermost.calls/server/dist/plugin-linux-amd64
             ├─1708 plugins/com.mattermost.apps/server/dist/plugin-linux-amd64
             ├─1721 plugins/playbooks/server/dist/plugin-linux-amd64
             └─1736 plugins/focalboard/server/dist/plugin-linux-amd64

Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.980 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifySubscriptions"}
Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.980 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifyLogger"}
Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.991 -08:00","level":"info","msg":"FocalBoard Server","caller":"app/plugin_api.go:973","plugin_id":"focalboard","version":"7.5.4","edition":"plugin","build_number":"3697449214","build_date":"\"Wed Dec 14 18:04:06 UTC 2022\"","build_hash":"414>
Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.991 -08:00","level":"info","msg":"Server.Start","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:45:16 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:16.004 -08:00","level":"info","msg":"Boards product successfully started.","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:45:17 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:17.217 -08:00","level":"info","msg":"Starting Server...","caller":"app/server.go:913"}
Dec 30 19:45:17 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:17.217 -08:00","level":"info","msg":"Server is listening on [::]:8065","caller":"app/server.go:985","address":"[::]:8065"}
Dec 30 19:45:17 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:17.217 -08:00","level":"info","msg":"Sending systemd READY notification.","caller":"commands/server.go:130"}
Dec 30 19:45:17 ubuntu systemd[1]: Started Mattermost.
Dec 30 19:45:55 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:55.156 -08:00","level":"info","msg":"Post.Message has size restrictions","caller":"sqlstore/post_store.go:2475","max_characters":16383,"max_bytes":65535}

 

서버를 껏다 켜면서 테스트 해보니 위와 같이 나옵니다. 

리눅스 시스템 서비스를 이용하면, 정말 편합니다. 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

이번 글에서는 제가 지난 번에 리눅스를 설치 하면서 뭔가를 설치해보고자한다고 말씀 드렸는데 그것 중에 하나가 Mattermost라는 툴입니다.

이툴은 Slack이라는 협업도구(?)를 대체하는 프로그램 입니다.

Mattermost는 Slack과 마찬가지로, 웹사이트에서 가입해서 사용할 수 있습니다.

하지만, Slack과는 다르게 Self-managed server를 제공 합니다.

그래서 저는 테스트 겸 제가 셋팅해 놓은 VMWARE ubuntu에 그리고 궁극적으로 외부의 VPS에 설치하고자 합니다.

Mattermost 설치전으로 되돌릴수 있도록 백업을 하고 있습니다. ^^

zip파일로 VM폴더를 묶어 두면 나중에 복원하거나 다른 것을 해볼 때 사용 가능 합니다.

이부분은 다음에 VMWARE 백업 이라는 주제로 한번 글을 써보겠습니다.

오늘은 Mattermost 설치에 주안점을 두겠습니다.

Mattermost 공식 홈페이지에는 기본적으로 docker를 이용해서 설치하고 사용하는 법을 알려 주고 있습니다. 그런데 제가 docker잘 모릅니다. T.T

그래서 일단 Ubuntu에 직접 설치하는 것을 생각하고 있습니다.

순서를 조금 요약해보겠습니다.

1. Ubuntu 설치
2. Database 설치
3. Mattermost server 프로그램 설치
4. Mattermost server 프로그램 설정
5. Mattermost server 상에 TLS 설정
6. NGINX server 설치
7. Mattermost server를 위한 proxy로 NGINX 설정
8. SSL과 HTTP/2와 함께 NGINX 설정

공식 매뉴얼에 나오 있는 것은 위와 같습니다.

1. Ubuntu 설치


리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install https://talkit.tistory.com/677

위 글로 대체 하겠습니다.

2. Database 설치


리눅스/Linux 우분투 리눅스에 MySQL을 설치해보자. How to install MySQL on Ubuntu https://talkit.tistory.com/680

MySQL 설치도 위글로 대체 하겠습니다. ^^

설치가 끝나면 계정 설을 해야 합니다.

sudo mysql -u root -p

# 프롬프트가 등장하면

create user 'mmuser'@'%' identified by 'mmuser-password';

mmuser는 그대로 두시고, mmuser-password 를 원하는 비밀번호로 변경해서 진행 하시면 되는데 보안상 호스트가 %인것은 위험한데 저건 일단 오늘은 설치해보고 보관 관련 이슈는 한번 다뤄 보겠습니다.

Mattermost를 위한 데이터베이스를 하나 만듭니다.

create database mattermost;

mattermost 데이터베이스에 mmuser에게 권한을 줍니다.

 grant all privileges on mattermost.* to 'mmuser'@'%';

여기도 모든 권한을 줘서 보안 관련 이슈를 말씀 드리겠습니다.

그런데 저렇게 설정하면 나중에 보안 문제 빼고는 편안 합니다. ^^

설정 다하셨으면 MySQL은 빠져 나오시면 됩니다.

3. Mattermost server 프로그램 설치

Deploy Your Self-Hosted Mattermost Server | Mattermost

 

Deploy Your Self-Hosted Mattermost Server | Mattermost

Deploy a Mattermost server in minutes on the platform of your choice including Kubernetes, Ubuntu, Debian, Red Hat, and Docker.

mattermost.com

위 URL에서 최신 버전의 Mattermost 서버를 다운로드 합니다. 

wget https://releases.mattermost.com/7.5.2/mattermost-7.5.2-linux-amd64.tar.gz

위 명령어를 내리면, 다운로드를 진행 합니다. 

tar xzvfp mattermost-7.5.2-linux-amd64.tar.gz

받은 파일의 압축을 푸십시오.

sudo mv mattermost /opt

압축을 /opt 로 옮기라고 되어 있습니다. 그래서 저는 따라하는 중입니다. 

sudo mkdir /opt/mattermost/data

데이타 폴더를 만드라네요 ^^

sudo useradd --system --user-group mattermost

mattermost 리눅스 계정을 만들라고 합니다. 

sudo chown -R mattermost:mattermost /opt/mattermost

mattermost 계정에 프로그램 폴더를 권한을 줍니다. 

sudo chmod -R g+w /opt/mattermost

그룹에 쓰기권한을 주네요 ^^

/opt/mattermost/config/config.json

위 파일을 수정해야 합니다. ^^

sudo vi /opt/mattermost/config/config.json
 "SqlSettings": {
    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
    "DataSourceReplicas": [],
    "DataSourceSearchReplicas": [],
    "MaxIdleConns": 20,
    "ConnMaxLifetimeMilliseconds": 3600000,
    "ConnMaxIdleTimeMilliseconds": 300000,
    "MaxOpenConns": 300,
    "Trace": false,
    "AtRestEncryptKey": "",
    "QueryTimeout": 30,
    "DisableDatabaseSearch": false,
    "MigrationsStatementTimeoutSeconds": 100000,
    "ReplicaLagSettings": []
  },

config.json을 열면, SqlSettings 가 있습니다. 
기본적으로 PostgreSQL로 되어 있네요

 "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mmuser:비밀번호1@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s"",
    "DataSourceReplicas": [],
    "DataSourceSearchReplicas": [],
    "MaxIdleConns": 20,
    "ConnMaxLifetimeMilliseconds": 3600000,
    "ConnMaxIdleTimeMilliseconds": 300000,
    "MaxOpenConns": 300,
    "Trace": false,
    "AtRestEncryptKey": "",
    "QueryTimeout": 30,
    "DisableDatabaseSearch": false,
    "MigrationsStatementTimeoutSeconds": 100000,
    "ReplicaLagSettings": []
  },

위와 같이 변경 합니다. 앞에서 그대로 따라하셨으면 비밀번호만 변경해주시면 됩니다. 

그리고 저장 하고 빠져 나갑니다. 

    "SiteURL": "http://원하는주소",

SiteURL을 위와 같이 변경 하십시오.

https로 변경 하겠지만, ^^ http:// 로 여기서는 설정 합니다. 

이제 거의 설치가 끝난 것 같습니다. ^^

cd /opt/mattermost

저희가 설치한 디렉토리로 이동 합니다. 

sudo -u mattermost ./bin/mattermost

서버를 실행 합니다. 두둥.

뭔가 서버는 잘 떴구요.

이 화면이 나오면 잘된겁니다. 

일단 저는 웹브라우져로 접속해 보겠습니다. 

처음 가입 시키는 아이디가 system_admin 권한을 가진답니다. 

^^

첫번째 아이디는 어디서 만들지를 고민 하고있었습니다. T.T

여기서 하면 되네요.

Email address는 이메일 주소이고,

Username은 이름이 아니고 T.T 계정입니다. 띄워쓰기 없이 계정으로 만드십시오.

비밀번호는 잘 만드십시오.

Team이 없으니 가입 하라고 나옵니다. ^^

Go to system console을 눌러서 들어간 화면 입니다. ^^

여기까지 보셨으면 ^^ 빠져 나옵니다 

PuTTY로 돌아가서 Ctrl + c 키를 누르면 서버가 꺼집니다. 

그런데 매일 매일  Shell 상에 저 서버를 띄워 둘수는 없습니다. ^^

그래서 system 서비스로 만들어야 합니다. 

sudo touch /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
BindsTo=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
  WantedBy=mysql.service

vi 를 이용해서 위 파일열 여시고 붙여 넣으시면 됩니다. 

단, Ubuntu 이고, 제가 위에 설명한대로 따라하셨다는 전제 하에서 입니다 .^^

설치 위치는 변경 해주셔야 합니다. 혹시 다르게 설치 하셨으면요 ^^

서버를 자동으로 켜기 위해서 

sudo systemctl enable mattermost

서비스를 실행 합니다. 

sudo systemctl start mattermost

그럼 설치는 여기 까지 하고, 웹에서 Email 노티피케이션하고, 초대 가능하게 하기 등 몇가지 설정하상은 다음 글에서 설명 드리겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

리눅스/Linux 우분투에 FTP 서버를 설치해보자. How to install FTP server on Ubuntu Linux https://talkit.tistory.com/693

저는 VMWARE에 설치된 우분투 리눅스에 FTP 서버를 설치를 했습니다. 

하지만 지금 하는 내용은 일반적인 리눅스 FTP에도 해당 합니다. 

WinSCP가 컴퓨터에 없으면, 

[무료소프트웨어] 알FTP/ALFTP 대체프로그램 WinSCP 설치하기 https://talkit.tistory.com/606

글을 참조하셔서 설치하시면 됩니다. 

저는 설치가 되어 있기 때문에 어떻게 사용하는지만 알려 드리겠습니다. ^^

메뉴는 위와 같이 생겼습니다. 

저기서 세션(S) 를 클릭하시고 새로운 세션을 클릭하십시오.

이렇게 생긴 아이가 뜰겁니다. ^^

저는 워낙 많은 사이트가 등록 되어 있어서 가렸습니다. 

처음올 파일 프로토콜에서 SCP를 FTP로 변경 합니다. 

우선 제가 설치한 서버는 암호화를 안했기 때문에 암호화 안함 이라고 선택 하시면 됩니다. 

서버정보에 암호화가 되어 있으면 암호화를 선택하시면 됩니다. 

설치하신 서버 또는 접속하고자 하는 서버의 호스트 이름/IP/도메인명 을 입력합니다. 

포트는 자동으로 선택된 21번이 맞구요. 혹시나, 보안상 서버 관리자가 포트를 변경 했으면, 변경된 포트번호를 사용하시면 됩니다. 

그리고, 아이디 현재 제 서버에는 talkit 밖에 없어서 ^^ 비밀번호는 비밀번호를 입력하시면 됩니다. 

그리고 저기 저장 버튼을 누르시면 

위와 같이 나옵니다. 

집에서 사용하는 개인 PC 같은 경우 암호 저장에 체크하셔도 됩니다.

하지만, 밖에서 사용하는 공용 PC는 암호를 저장하지 마십시오.

저는 암호를 기억하려고 노력해서 보통은 암호를 저장하지 않습니다. 

아까 세션창의 왼쪽 화면에 ^^ 위와 같이 나올 겁니다. 

아이디@호스트명

위와 같이 나오면 이제 세션이 저장이 잘된거구요.

오른쪽 하단에서 로그인을 클릭하시면 됩니다. 

비밀번호 저장을 체크 하셨으면 안나옵니다만, ^^ 자동으로 로그인 해줍니다. 

저는 비밀번호 저장을 체크 하지 않아서 위와 같이 비밀번호를 묻습니다. 

해당 서버의 비밀번호를 넣으시면 됩니다. 

왼쪽이나 오른쪽 창의 내용은 다르겠지만 위와 같이 접속이 되었을 겁니다. 

여기서 왼쪽 창은 로컬컴퓨터의 파일 목록 입니다. 

오른쪽 창은 서버 컴퓨터의 파일 목록 입니다. 

그전에 파일을 하나 준비를 해야 해서 리눅스 상에서 준비를 해보겠습니다. 

echo "FTP 전송을 위한 파일 준비" > ftpserver.txt

echo에 관련된 글을 작성 했는데 echo를 이용해서 파일을 만드는 방법은 설명을 안했네요. ^^

또 글감이 하나 생겼습니다. ^^

putty로 가셔서 위 명령어를 수행 하십시오.

echo "FTP 전송을 위한 파일 준비" > ftpserver.txt
talkit@ubuntu:~$ ls
Desktop  Documents  Downloads  ftpserver.txt  Music  Pictures  Public  Templates  Videos

실제로 실행을 해보면 위와 같이 나옵니다. 

서버에다가 파일을 만들었으니까 서버 쪽에 있는 새로 고침 버튼을 클릭 합니다. 

저는 c:\dev\study  에 파일을 다운로드 받겠습니다. 

위와 같이 받아 졌을 겁니다. 

그러면 파일을 한번 열어 보겠습니다. 

ftpserver.txt를 더블 클릭하십시오.

파일명이 다르면 해당 파일명을 더블 클릭하시면 됩니다. 

FTP 전송을 위한 파일 준비

저희가 명령어로 만들었던 파일이 잘 들어 있습니다. 

자 그럼 저 파일을 서버로 다시 보내 보겠습니다. 

그런데 파일이 동일한 파일이 있으니까

숙달 되시면 WinSCP에서도 가능한 일이지만, 탐색기를 열고 해당 폴더에 가십시오.

그리고 복사해서 붙여 넣기를 하시고 이름을 바꾸겠습니다. 

요렇게 될꺼구요 

저기 복사보면을 ftpclient.txt 로 바꿔 보겠습니다. 

이렇게 되었을 껍니다. 

저기서 FTP로 돌아가면

로컬 컴퓨터 쪽 화면에 ftpclient.txt가 생겼습니다. ^^

내용은 그냥 아까하고 동일하게 하고, 서버로 올려 보겠습니다. 

저 파일을 잡고, 서버 쪽으로 드래그앤드랍 하시면 됩니다. 끌어서 놓으시면 됩니다. 

또는 파일을 클릭하시고, F5키를 누르시면 됩니다. 

또 한가지는 오른쪽 마우스 누르시고, 업로드를 클릭하면, 

위 그림과 같이 나옵니다. 

저기서 확인 누르시면 업로드가 됩니다. 

그러면 위와 같이 나옵니다.

그리고 동일하게 서버 컴퓨터 쪽에 있는 ftpclient.txt를 더블 클릭 해보십시오.

그러면, 

FTP 전송을 위한 파일 준비

동일하게 들어 있을 겁니다. 

그리고 이것이 사기인가 하시는 분들은 putty로 돌아가서 

cat ftpclient.txt

해보시면  

cat ftpclient.txt
FTP 전송을 위한 파일 준비

요렇게 잘 나옵니다. 

개발을 하다가 보면 FTP를 사용할일이 많습니다. 

저는 간단하게 설명을 드렸지만, 여러분은 좀 더 다양한 기능을 사용해 보십시오.

파일을 올려 보고 파일을 지워도 보고

단, 시험용 머신을 하나 만드시고 하시는 것을 권해 드립니다. ^^

간단하게 파일을 올리고 내리는 방법을 설명 드렸습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

오늘은 리눅스하고 윈도우즈 하고 파일을 교환 하려면 어떤 프로그램이 필요한가?

일단 파일을 전송할 수 있는 프로토콜은 SSH를 통한 SCP라는 프로토콜이 있습니다.

그리고 원래 파일 전송용으로 만들어진 FTP 라는 프로톨이 있습니다.

일반적으로 각가의 포트번호는

ftp : 21
scp : 22

위와 같습니다.

리눅스/Linux SSH를 통해서 VMWARE Linux에 접속해보자. How to connect to Linux on VMWARE via SSH https://talkit.tistory.com/688

이글에 보시면 SSH를 설치하는 방법이 나와 있습니다. 우분투를 기준으로 하고 있어서 다음에 레드햇 계열에서 어떻게 설치하는지를 한번 보도록 하겠습니다.

그럼 오늘도 putty를 켜보겠습니다.

저글에 있는대로 ifconfig 명령어를 VM에서 실행하시거나 실제 IP주소를 받으신 다음에 접속 하시면 됩니다.

오늘도 접속이 잘 되었습니다.

SCP를 사용한다면, 구지 FTP 서버를 설치할 필요가 없다고 생각됩니다.

하지만, 서버 운영하는데 연계라던지 여러가지 업무가 있는데 상대편의 솔루션이 SCP를 지원해주지 못하는 기관 등이 있으면 어쩔 수 없이 FTP 서버를 설치 하셔야 합니다.

그래서 오늘은 서버 설치를 진행하고 다음 글에서 FTP 클라이언트를 이용해서 접속도 해보겠습니다.

sudo apt install vsftpd

리눅스에서 요즘 많이 사용하는 ftp서버는 vsftpd입니다.

그래서 요놈을 설치하도록 하겠습니다.

저는 옛날에 proftpd라는 프로그램을 많이 사용을 했습니다.

sudo apt install vsftpd
[sudo] password for talkit:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  vsftpd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 115 kB of archives.
After this operation, 338 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu focal/main amd64 vsftpd amd64 3.0.3-12 [115 kB]
Fetched 115 kB in 2s (75.7 kB/s)
Preconfiguring packages ...
Selecting previously unselected package vsftpd.
(Reading database ... 160013 files and directories currently installed.)
Preparing to unpack .../vsftpd_3.0.3-12_amd64.deb ...
Unpacking vsftpd (3.0.3-12) ...
Setting up vsftpd (3.0.3-12) ...
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /lib/systemd/system/vsftpd.service.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.19) ...

설치가 잘 되었습니다.

ps -ef | grep vsftpd
root        2451       1  0 23:54 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd                                                                                                                                                                                                                                             .conf
talkit      2946    2221  0 23:54 pts/0    00:00:00 grep --color=auto vsftpd

리눅스/Linux ps, grep 실행되는 프로그램/프로세스 찾기 How to find program/processor on Linux by ps, grep https://talkit.tistory.com/690

제가 최근에 알려드린 명령어로 ^^ vsftpd를 찾아 봤습니다.

잘 켜져 있습니다.

조금 다른 명령어로 하나 더 알아보고 넘어 가겠습니다.

netstat -na | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN

다른 많은 아이들이 나오긴 하지만, ^^

일단 21번 포트가 열려 있습니다.

자 그럼 오늘은 설치가 다 끝났습니다.

# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
#
# Run standalone?  vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
listen_ipv6=YES
#
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
#write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES

서버 설치는 끝났고 서버 설정 중에서 2가지만 일단 바꿔주고 서버를 껐다가 켜도록 하겠습니다.

#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022

write_enable=YES 앞에 주석 풀고

loca_umask=022 앞에 주석도 풀어 주십시오.

이제 방법을 말씀 드리겠습니다.

sudo vi /etc/vsftpd.conf

vi 로 vsftpd.conf 파일을 엽니다.

그리고, 화살표키로 해당 라인으로 이동한 다음에

키를 클릭 합니다.

그리고,

:wq

를 순서대로 입력하고 저장하시면 됩니다.

서버는 설정파일이 재시작을 해줘야 반영 되기 때문에

sudo systemctl stop vsftpd
sudo systemctl start vsftpd

중간 중간에 비밀번호를 물으면 비밀번호를 넣어 주면 됩니다. ^^

이제 진짜로 서버 설정까지해서 설치가 다 되었습니다.

아무 설명없이 그냥 FTP 서버에 잘 접속된 모습을 보여 드리고 마치겠습니다.

제가 주로 사용하는 FTP 서버에 잘 접속이 되었습니다.

지금은 제가 VMWARE에 설치를 진행했고, 클라우드는 또 달라서 다음에 클라우드에 어떻게 셋팅을 하는지 알아보겠습니다.

감사합니다.

관련글

[무료소프트웨어] Windows에 FTP 서버 구축하기(1) FileZillaServer 설치하기 :: 가야태자의 IT이야기 (tistory.com)

[[무료소프트웨어] Windows에 FTP 서버 구축하기(1) FileZillaServer 설치하기

오늘 소개해 드릴 프로그램은 파일 질라 서버/FileZilla Server 입니다. [무료소프트웨어] 알FTP 대체 프로그램 파일질라/FileZilla 설치하기/Install :: 가야태자의 IT이야기 (tistory.com) 이전 글에서 소개 해

talkit.tistory.com](https://talkit.tistory.com/612)

[무료소프트웨어] Windows에 FTP 서버 구축하기(2) FileZillaServer 설정하기 :: 가야태자의 IT이야기 (tistory.com)

[[무료소프트웨어] Windows에 FTP 서버 구축하기(2) FileZillaServer 설정하기

안녕하세요 가야태자 @talkit 입니다. 지난 번 글에 이어서 서버의 사용자를 추가해보겠습니다. 우선 서버를 설치 하신 다음에 이 글을 읽으셔야 해서 서버 설치는 [무료소프트웨어] Windows에 FTP 서

talkit.tistory.com](https://talkit.tistory.com/619)

[무료소프트웨어] 알FTP/ALFTP 대체프로그램 WinSCP 설치하기 :: 가야태자의 IT이야기 (tistory.com)

[[무료소프트웨어] 알FTP/ALFTP 대체프로그램 WinSCP 설치하기

안녕하세요 가야태자 @talkit 입니다. 오늘은 파일 전송 프로그램 중에서 무료 프로그램을 소개하고 설치 해보겠습니다. 파일 전송 프로그램을 개발을 진행을 하고 개발이 끝나면 운영서버나, 개

talkit.tistory.com](https://talkit.tistory.com/606)

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

뭘 좀 깔아 보려고 우분투를 VMWARE에 설치 했는데 지금 열심히 리눅스 강좌만 띠다 하고 있습니다. ^^

뭐 좋습니다. 

지난 번 글에서 프로세스를 프로세스 번호로 죽이는 법을 알려 드렸습니다. 

오늘은 프로세스명으로 모두 죽이는 방법을 알려 드리겠습니다. 

명령어는 killall 입니다. 

이번에도 만만한 top 명령어를 한 4번 실행 해두었습니다. 

그럼 저 프로그램들을 지우는 방법을 알아 보겠습니다. 

 ps -ef | grep top
talkit      2814    2263  0 06:58 pts/0    00:00:00 top
talkit      2830    2824  0 06:58 pts/2    00:00:00 top
talkit      2844    2838  0 06:58 pts/3    00:00:00 top
talkit      2861    2855  0 06:58 pts/4    00:00:00 top
talkit      2863    2388  0 06:59 pts/1    00:00:00 grep --color=auto top

우선 kill 명령어를 이용하는 방법입니다. 

kill -9 2814 2830 2844 2861 2863

위와 같이 프로세스를 나열하는 방법입니다. ^^

한번에 지우시려면 killall을 사용하시면 됩니다. 

killall [옵션들] 지우고싶은명령어
killall top

위와 같이 사용합니다. 실제로 해보겠습니다. 

한번의 명령어로 다 잘 죽였습니다. ^^

kill 과 killall 잘 활용하시면 됩니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘의 리눅스에서 kill 명령어에 대해서 알아 보겠습니다. 

KILL(1)                                                                                                      User Commands                                                                                                      KILL(1)

NAME
       kill - send a signal to a process

SYNOPSIS
       kill [options] <pid> [...]

DESCRIPTION
       The  default signal for kill is TERM.  Use -l or -L to list available signals.  Particularly useful signals include HUP, INT, KILL, STOP, CONT, and 0.  Alternate signals may be specified in three ways: -9, -SIGKILL or -KILL.
       Negative PID values may be used to choose whole process groups; see the PGID column in ps command output.  A PID of -1 is special; it indicates all processes except the kill process itself and init.

OPTIONS
       <pid> [...]
              Send signal to every <pid> listed.

       -<signal>
       -s <signal>
       --signal <signal>
              Specify the signal to be sent.  The signal can be specified by using name or number.  The behavior of signals is explained in signal(7) manual page.

       -l, --list [signal]
              List signal names.  This option has optional argument, which will convert signal number to signal name, or other way round.

       -L, --table
              List signal names in a nice table.

       NOTES  Your shell (command line interpreter) may have a built-in kill command.  You may need to run the command described here as /bin/kill to solve the conflict.

사용법은 위에도 보이지만요.

kill [옵션들] 프로세스아이디 [프로세스아이디...]

위와 같이 사용합니다. 

제가 X windows에서 top 명령어를 하나 실행해 놓았습니다.  한번 죽여 보겠습니다. 

 ps -ef | grep top
talkit      2761    2263  0 06:46 pts/0    00:00:00 top
talkit      2768    2388  0 06:47 pts/1    00:00:00 grep --color=auto top

위와 같이 나오구요 저기서 프로세스 아이디는 2761 입니다. 

X에 켜져 있는 top 명령어가 죽었습니다. ^^

저렇게 해도 죽지 않는 경우가 있습니다. ^^

그럴때는 -9 옵션과 함께 주시면 대부분 죽습니다. 

kill -9 프로세스아이디들

오늘은 여기까지 하고 다음 강좌에서는 killall을 알아보겠습니다. 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

지난 번에는 top, free에 관해서 이야기를 했습니다. 

리눅스/Linux top, free현재 CPU/Memory 상태를 알아보자. How to get Information for CPU and Memory status on Linux https://talkit.tistory.com/689

위 글을 참조 하시면 됩니다. 

오늘은 ps에 대해서 말씀 드리겠습니다. 리눅서에서 실행되는 프로세스, 프로그램에 대해서 보여 주는 프로그램입니다. 

사용법은 아래와 같습니다. 

ps [옵션들]

그냥 ps 명령어를 한번 내려 보겠습니다. 

 ps
    PID TTY          TIME CMD
   2388 pts/1    00:00:00 bash
   2649 pts/1    00:00:00 ps

위와 같이 나옵니다. 지금 현재 쉘 상에서 실행하는 프로세스만 나옵니다. 

옵션에 관해서 좀 알아 보겠습니다. 

-e 옵션은 리눅스의 모든 프로세스를 보여 준다고 되어 있습니다. 

ps -e
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
            ...
     52 ?        00:00:00 ksoftirqd/6
     54 ?        00:00:00 kworker/6:0H-events_highpri

아까 보다 훨 많은 프로세스가 보일 겁니다. 

-f 옵션은 명령어의 모든 경로를 보여 준답니다. 지난 번글의 top에서 <c> 키 토글과 비슷합니다. 

자 한번 해보겠습니다. 

ps -f
UID          PID    PPID  C STIME TTY          TIME CMD
talkit      2388    2387  0 06:09 pts/1    00:00:00 -bash
talkit      2691    2388  0 06:34 pts/1    00:00:00 ps -f

예쁘게 나오네요.

자 두가지를 조합해서 명령어를 내려 보겠습니다.  -ef 가 되겠습니다. ^^

UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 05:59 ?        00:00:01 /sbin/init auto noprompt
               ...
root         553       1  0 05:59 ?        00:00:00 /lib/systemd/systemd-udevd
root         560       1  0 05:59 ?        00:00:00 vmware-vmblock-fuse /run/vmblock-fuse -o rw,subtype=vmware-vmblock,default_permissions,allow_other,dev,suid
               ...
talkit      2103    1929  0 06:07 ?        00:00:00 /usr/libexec/gsd-disk-utility-notify
talkit      2107    1717  0 06:07 ?        00:00:00 /usr/libexec/gsd-xsettings
talkit      2137    1717  0 06:07 ?        00:00:00 /usr/libexec/gsd-printer
talkit      2143    1717  0 06:07 ?        00:00:01 /usr/bin/vmtoolsd -n vmusr --blockFd 3
talkit      2157    1733  0 06:07 ?        00:00:00 /usr/libexec/gvfsd-trash --spawner :1.3 /org/gtk/gvfs/exec_spaw/0
talkit      2206    1717  0 06:07 ?        00:00:00 /usr/libexec/dconf-service
talkit      2211    1717  0 06:07 ?        00:00:00 /usr/libexec/evolution-addressbook-factory

위에 보시면 실제로 /usr/bin 등의 풀경로와 옆에 옵션 정보까지 다 보여 주고 있습니다. 

그리고, -e 옵션을 넣었기 때문에 모든 프로세스가 나왔습니다. 

ps 에 대한 설명은 여기까지 말씀 드리구요.

grep과 조합 하는 법을 알려 드리겠습니다. 

제가 쓰는 방법 외에도 많겠지만 저는 그냥 제가 사용하는 방법을 알려 드리겠습니다. ^^

ps [옵션들] | grep "검색어"

위와 같이 사용합니다. 옵션들은 저는 거의 -ef 로 고정 되어 있습니다. ^^

그래서 제가 실행한 프로세스만 찾아 보겠습니다. 

ps -ef | grep "talkit"
0 06:07 ?        00:00:00 /lib/systemd/systemd --user
talkit      1718    1717  0 06:07 ?        00:00:00 (sd-pam)
talkit      1724    1717  0 06:07 ?        00:00:00 /usr/bin/pulseaudio --daemonize=no --log-target=journal
talkit      1726    1717  0 06:07 ?        00:00:00 /usr/libexec/tracker-miner-fs
talkit      1729    1717  0 06:07 ?        00:00:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
talkit      1733    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfsd
talkit      1738    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
talkit      1758    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
talkit      1763    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
talkit      1767    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
talkit      1771    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-goa-volume-monitor
talkit      1777    1717  0 06:07 ?        00:00:00 /usr/libexec/goa-daemon
talkit      1780       1  0 06:07 ?        00:00:00 /usr/bin/gnome-keyring-daemon --daemonize --login
talkit      1791    1717  0 06:07 ?        00:00:00 /usr/libexec/goa-identity-service
talkit      1797    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-afc-volume-monitor
talkit      1815    1704  0 06:07 tty2     00:00:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
talkit      1817    1815  0 06:07 tty2     00:00:01 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
talkit      1827    1815  0 06:07 tty2     00:00:00 /usr/libexec/gnome-session-binary --systemd --systemd --session=ubuntu
talkit      1894    1827  0 06:07 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
talkit      1913    1717  0 06:07 ?        00:00:00 /usr/libexec/at-spi-bus-launcher
talkit      1918    1913  0 06:07 ?        00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
talkit      1922    1717  0 06:07 ?        00:00:00 /usr/libexec/gnome-session-ctl --monitor
talkit      1929    1717  0 06:07 ?        00:00:00 /usr/libexec/gnome-session-binary --systemd-service --session=ubuntu
talkit      1942    1717  0 06:07 ?        00:00:05 /usr/bin/gnome-shell

이런식으로 제 계정으로 실행된 내용들이 나옵니다. ^^

그리고 monitor 가 포함되어 있는 프로세스만 찾을 수도 있습니다. 

 ps -ef | grep  "monitor"
talkit      1758    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
talkit      1763    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
talkit      1767    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
talkit      1771    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-goa-volume-monitor
talkit      1797    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-afc-volume-monitor
talkit      1922    1717  0 06:07 ?        00:00:00 /usr/libexec/gnome-session-ctl --monitor
talkit      2698    2388  0 06:40 pts/1    00:00:00 grep --color=auto monitor

참고로 한단어 일경우 "" 로 안묶어 주셔도 됩니다. ^^

grep을 이용해서 해킹이 들어 왔는지 내가 아닌 다른계정이 있는지도 찾을 수 있구요.

내 프로그램이 살아 있는지도 알수 있습니다. 

그리고, 찾은 프로그램의 프로세스 번호도 알 수 있습니다. ^^ 

두번째 칸의 숫자가 프로세스 번호 입니다. 

그 프로세스를 죽이려고 할때 프로세스 번호가 필요 합니다. 

해당 내용은 kill 명령어를 설명하면서 다시 알려드리겠습니다. 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

putty를 켜시고, VMWARE 또는 Oracle 클라우드에 접속 합니다. 

저는 VMWARE에 접속을 하겠습니다. 

잘 접속이 되었습니다. 

오늘 이야기할 내용은 CPU 사용량과 메모리 사용량 관련해서입니다. 

첫번째로 top라는 명령어를 보겠습니다. 

top

그냥 top라고 치시면 됩니다. 

Tasks: 398 total,   1 running, 397 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15967.8 total,  14368.8 free,    882.3 used,    716.7 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  14804.8 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    868 root      20   0  248084   7292   6276 S   0.3   0.0   0:00.91 vmtoolsd
   2143 talkit    20   0  300684  41660  30476 S   0.3   0.3   0:00.55 vmtoolsd
      1 root      20   0  168204  11212   8112 S   0.0   0.1   0:01.72 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:1H-kblockd
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace
     13 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/0

대충 위와 같은 화면이 뜰껍니다. 

일단 Cpu는 거의 사용을 하지 않고 있습니다. ^^

메모리도 약16GB 정도 되는데 거의 사용을 안하고 있네요 ^^ 

여기서 여러가지 명령어가 있지만, <1> 키를 눌러 보십시오.

top - 06:13:31 up 13 min,  2 users,  load average: 0.00, 0.07, 0.10
Tasks: 390 total,   1 running, 389 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu8  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu9  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu10 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu11 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu12 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu13 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu14 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu15 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15967.8 total,  14369.7 free,    880.6 used,    717.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  14806.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   2423 talkit    20   0   20788   4088   3136 R   0.3   0.0   0:00.15 top
      1 root      20   0  168204  11228   8112 S   0.0   0.1   0:01.73 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:1H-kblockd
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace
     13 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/0
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.08 rcu_sched
     15 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0
     16 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     20 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1

개별  CPU정보를 함께 보여 줍니다. 

다시 <1> 키를 누르시면 없어집니다. 

키는 숫자 1입니다. ^^

그리고 <c> 키를 눌러 보십시오.

top - 06:15:03 up 15 min,  2 users,  load average: 0.00, 0.05, 0.08
Tasks: 390 total,   1 running, 389 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15967.8 total,  14368.4 free,    881.9 used,    717.6 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  14805.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     14 root      20   0       0      0      0 I   0.3   0.0   0:00.10 [rcu_sched]
    206 root      20   0       0      0      0 I   0.3   0.0   0:00.27 [kworker/4:1-events]
   2246 root      20   0       0      0      0 I   0.3   0.0   0:00.01 [kworker/15:3-events]
      1 root      20   0  168204  11228   8112 S   0.0   0.1   0:01.74 /sbin/init auto noprompt
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 [kthreadd]
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_gp]
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_par_gp]
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [netns]

c 키는 소문자  c 입니다. 해당 키는 실행시켜 포함된 경로를 풀러 알려 줍니다. 

top 에서 다른 명령어도 있지만, 이정도만 아시면 된다고 생각됩니다. 

top 화면에서 빠저 나가려면 <q> 키를 누르시거나 , <Ctrl> + <c> 를 누르시면 됩니다. ^^

이번에 알려 드릴 명령어는 free라는 명령어 입니다. 메모리 관련 명령어 입니다. 

free [옵션들]

위와 같이 하시면 됩니다. 

free
              total        used        free      shared  buff/cache   available
Mem:       16351072      906368    14708876        2180      735828    15156960
Swap:       2097148           0     2097148

아무 옵션을 안주고 실행하면 위와 같이 보입니다. 여튼 15GB 정도 쓸수 있다는 이야기 입니다. 1024로 나누면 좀 더 적겠지만요 ^^

그럼 옵션을 몇가지 주겠습니다. 

free -m

눈치 채셨겠지만, Megabyte 단위로 보여 줍니다.

free -m
              total        used        free      shared  buff/cache   available
Mem:          15967         885       14364           2         718       14801
Swap:          2047           0        2047
free -g
              total        used        free      shared  buff/cache   available
Mem:             15           0          14           0           0          14
Swap:             1           0           1

-g 옵션은 GigaByte 단위로 보여 줍니다. 

free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       885Mi        14Gi       2.0Mi       718Mi        14Gi
Swap:         2.0Gi          0B       2.0Gi

-h 옵션은 사용자가 인식할 수 있는 단위로 보여 줍니다. 기가나 메가 단위네요 사용안하는 B는 바이트 입니다. ^^

혹시 더 많은 옵션이 필요하시면 man 명령어를 사용하십시오.

man top
man free

한번씩 읽어 보시는 것도 도움이 될 것입니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

오늘은 VMWARE에 Ubuntu를 설치 했습니다. VMWARE 켜서 계속 콘솔로만 접속을 할것인가? 이런 의문이 들었습니다. ^^

그래서 SSH를 통해서 어떻게 접속하게 할지 알아보겠습니다.

리눅스 IP 확인하기

VMWARE의 네트워크는 Bridged 로 잡혀 있다고 생각하고 진행 합니다.

VMWARE에서 터미널을 하나 여십시오.

오른쪽 마우스 누르고 Open in terminal 을 클릭하시면 됩니다.

요렇게 잘 나옵니다.

리눅스/Linux 리눅스의 네트워크 정보 확인 ifconfig/Windows ipconfig https://talkit.tistory.com/609

제가 작성한 글중에 위글이 있네요 ^^ 도움이 될껍니다.

일단 안가셔도 ifconfig 명령어를 이용하면 리눅스의 ip 주소를 알 수 있습니다. 한번 해보겠습니다.

ifconfig

Command 'ifconfig' not found, but can be installed with:

sudo apt install net-tools

말씀 드린대로, ifconfig를 쳤는데 net-tools 라는 툴이 없다고 나오네요 ^^

저대로 인스톨 하시면 됩니다.

sudo apt install net-tools

실행하시면

sudo apt install net-tools
[sudo] password for talkit: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  net-tools
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 196 kB of archives.
After this operation, 864 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu focal/main amd64 net-tools amd64 1.60+git20180626.aebd88e-1ubuntu1 [196 kB]
Fetched 196 kB in 4s (54.4 kB/s)    
Selecting previously unselected package net-tools.
(Reading database ... 157117 files and directories currently installed.)
Preparing to unpack .../net-tools_1.60+git20180626.aebd88e-1ubuntu1_amd64.deb ..
.
Unpacking net-tools (1.60+git20180626.aebd88e-1ubuntu1) ...
Setting up net-tools (1.60+git20180626.aebd88e-1ubuntu1) ...
Processing triggers for man-db (2.9.1-1) ...

대충 위와 같은 모습으로 설치가 끝날겁니다. ^^

그러면 다시 ifconfig 를 실행해 보겠습니다.

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.27  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::72d2:42b6:d287:b4aa  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d4:a7:43  txqueuelen 1000  (Ethernet)
        RX packets 6505  bytes 7791757 (7.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2779  bytes 205846 (205.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 168  bytes 14022 (14.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 168  bytes 14022 (14.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

여러분들도 위와 비슷하게 나올껍니다.

리눅스에 접속해보자.

이제 윈도우즈로 돌아와서 Putty를 켜십시오.

거의 매일 지겹게 보셨던 위 화면 호스트에 192.168.0.27 을 치시고 Open을 해보겠습니다. 

요렇게 나오네요. 22번 서버가 막혀 있던지 켜져 있지 않다는 이야기겠지요 ^^

sudo apt install openssh-server

openssh-server를 설치하십시오 

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  ncurses-term openssh-sftp-server ssh-import-id
Suggested packages:
  molly-guard monkeysphere ssh-askpass
The following NEW packages will be installed:
  ncurses-term openssh-server openssh-sftp-server ssh-import-id
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 688 kB of archives.
After this operation, 6,010 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Y 눌러서 설치를 진행 합니다. 

여러줄이 지나가면서 설치가 잘 되었습니다. ^^

다시 접속을 했더니 위와 같이 잘 접속이 됩니다. 

요렇게 잘 접속이 되네요 ^^

오늘은 여러번 설치한 우분투 서버에 접속을 해보았습니다. 

감사합니다. 

#브이엠웨어 #VM웨어 #VMWARE

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

리눅스/Linux tail 문서의 끝(꼬리)를 보는 명령어. The command for text tail. https://talkit.tistory.com/681

어제 글에 이어서 반대의 개념을 알아 보겠습니다. 

우선 계속 알아보듯이 man을 실행해 보겠습니다. 

man head
HEAD(1)                                     User Commands                                    HEAD(1)

NAME
       head - output the first part of files

SYNOPSIS
       head [OPTION]... [FILE]...

DESCRIPTION
       Print  the  first 10 lines of each FILE to standard output.  With more than one FILE, precede
       each with a header giving the file name.

       With no FILE, or when FILE is -, read standard input.

       Mandatory arguments to long options are mandatory for short options too.

       -c, --bytes=[-]NUM
              print the first NUM bytes of each file; with the leading '-', print all but  the  last
              NUM bytes of each file

       -n, --lines=[-]NUM
              print the first NUM lines instead of the first 10; with the leading '-', print all but
              the last NUM lines of each file

       -q, --quiet, --silent
              never print headers giving file names

       -v, --verbose
              always print headers giving file names

       -z, --zero-terminated
              line delimiter is NUL, not newline

       --help display this help and exit

       --version
              output version information and exit

       NUM may have a multiplier suffix: b 512, kB 1000, K  1024,  MB  1000*1000,  M  1024*1024,  GB
       1000*1000*1000,  G 1024*1024*1024, and so on for T, P, E, Z, Y.  Binary prefixes can be used,
       too: KiB=K, MiB=M, and so on.

AUTHOR
       Written by David MacKenzie and Jim Meyering.

REPORTING BUGS
       GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
       Report any translation bugs to <https://translationproject.org/team/>

COPYRIGHT
       Copyright © 2020 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3  or  later
       <https://gnu.org/licenses/gpl.html>.
       This  is free software: you are free to change and redistribute it.  There is NO WARRANTY, to
       the extent permitted by law.

SEE ALSO
       tail(1)

head는 리눅스에서 위에도 나와 있듯이 문서의 시작 부분을 보여주는 명령어 입니다. 

잼있는 것은 맨 마지막에 SEE ALSO에 어제 같이 이야기한 tail이라는 명령어가 있습니다. ^^

head [옵션들] 파일명

위와 같이 사용할 수 있습니다. 

실제로 옵션 없이 temp.txt 를 지난 번 글처럼 출력해 보겠습니다. 

head temp.txt
 
2022-12-01, 경기도, 1
2022-12-01, 강원도, 2
2022-12-01, 경상남도, 3
2022-12-01, 경상북도, 4
2022-12-01, 전라남도, 5
2022-12-01, 전라북도, 6
2022-12-01, 충청남도, 6
2022-12-01, 충청북도, 7
2022-12-02, 경기도, 2
2022-12-02, 강원도, 3

10줄이 잘 출력 되고 있습니다. 

다른 옵션들은 저는 거의 안쓰고 가끔 -n정도를 사용합니다. 

-n은 tail 명령어와 마찬가지로 줄수를 늘리거나 줄여 줍니다. 

-n으로 오늘은 5줄만 출력해보겠습니다. 

head -n 5 temp.txt

2022-12-01, 경기도, 1
2022-12-01, 강원도, 2
2022-12-01, 경상남도, 3
2022-12-01, 경상북도, 4
2022-12-01, 전라남도, 5

위와 같이 앞에서 다섯줄만 잘 출력 되고 있습니다. 

head는 정말로 가끔만 쓰는 명령어여서 ^^

여기서 줄이겠습니다.

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘 적으려고 하는 이야기는 리눅스 명령어 tail에 관한 이야기 입니다. 

tail은 사전적의미로 꼬리라는 의미가 있습니다. 

TAIL(1)                                                                        User Commands                                                                        TAIL(1)

NAME
       tail - output the last part of files

SYNOPSIS
       tail [OPTION]... [FILE]...

DESCRIPTION
       Print the last 10 lines of each FILE to standard output.  With more than one FILE, precede each with a header giving the file name.

       With no FILE, or when FILE is -, read standard input.

       Mandatory arguments to long options are mandatory for short options too.

       -c, --bytes=[+]NUM
              output the last NUM bytes; or use -c +NUM to output starting with byte NUM of each file

       -f, --follow[={name|descriptor}]
              output appended data as the file grows;

              an absent option argument means 'descriptor'

       -F     same as --follow=name --retry

       -n, --lines=[+]NUM
              output the last NUM lines, instead of the last 10; or use -n +NUM to output starting with line NUM

       --max-unchanged-stats=N
              with --follow=name, reopen a FILE which has not

              changed  size  after N (default 5) iterations to see if it has been unlinked or renamed (this is the usual case of rotated log files); with inotify, this op‐
              tion is rarely useful

       --pid=PID
              with -f, terminate after process ID, PID dies

       -q, --quiet, --silent
              never output headers giving file names

       --retry
              keep trying to open a file if it is inaccessible

       -s, --sleep-interval=N
              with -f, sleep for approximately N seconds (default 1.0) between iterations; with inotify and --pid=P, check process P at least once every N seconds

       -v, --verbose
              always output headers giving file names

       -z, --zero-terminated
              line delimiter is NUL, not newline

       --help display this help and exit

       --version
              output version information and exit

tail은 위의 매뉴얼에도 나와 있듯이 파일의 마지막 일부를 보여주는 명령어 입니다. 

tail [옵션들] 파일명

위와 같이 사용할 수 있습니다. 

많은 옵션이 있지만, 제가 주로 사용하는 옵션은 -n, -f 입니다. -s도 재미 있는 옵션이겠네요 ^^

먼저 -n은 기본적으로 10줄만 출력해주는 tail의 줄수를 늘릴수 있습니다. 

-f 는 계속 변환의 파일의 경우 모니터링 할 수 있습니다. 

그래서 -f 같은 경우는 로그를 추적할때 많이 쓰입니다. 

실제로 한번 해보도록 하겠습니다. 

tail -f temp.txt

지난 번에 만들어 둔 temp.txt의 마지막 10줄을 한번 보겠습니다. 

tail temp.txt
2022-12-09, 충청남도, 15
2022-12-09, 충청북도, 16
2022-12-10, 경기도, 10
2022-12-10, 강원도, 11
2022-12-10, 경상남도, 12
2022-12-10, 경상북도, 13
2022-12-10, 전라남도, 14
2022-12-10, 전라북도, 15
2022-12-10, 충청남도, 16
2022-12-10, 충청북도, 17

위와 같이 나옵니다. 

그리고, 최근 20줄을 봐 보도록 하겠습니다. 

tail -n 20 temp.txt

위와 같이 명령어를 내리면 됩니다. 

tail -n 20 temp.txt
2022-12-08, 전라남도, 12
2022-12-08, 전라북도, 13
2022-12-08, 충청남도, 14
2022-12-08, 충청북도, 15
2022-12-09, 경기도, 9
2022-12-09, 강원도, 10
2022-12-09, 경상남도, 11
2022-12-09, 경상북도, 12
2022-12-09, 전라남도, 13
2022-12-09, 전라북도, 14
2022-12-09, 충청남도, 15
2022-12-09, 충청북도, 16
2022-12-10, 경기도, 10
2022-12-10, 강원도, 11
2022-12-10, 경상남도, 12
2022-12-10, 경상북도, 13
2022-12-10, 전라남도, 14
2022-12-10, 전라북도, 15
2022-12-10, 충청남도, 16

마지막 20줄을 잘 보여 줍니다. 

그러면 이제 조금 다르게 실제로 로그를 한번 보겠습니다. 

제가 일부러 프로그램을 하나 설치해보고 설치하기 전과 설치후를 모니터링 하는 것을 보여 드리겠습니다. ^^

cd /var/log
tail -f dpkg.log

리눅스 로그 폴더로 이동해서 dpkg.log를 모니터링 합니다. 

tail -f dpkg.log
2022-12-25 14:16:27 configure libcgi-fast-perl:all 1:2.15-1 <none>
2022-12-25 14:16:27 status unpacked libcgi-fast-perl:all 1:2.15-1
2022-12-25 14:16:27 status half-configured libcgi-fast-perl:all 1:2.15-1
2022-12-25 14:16:27 status installed libcgi-fast-perl:all 1:2.15-1
2022-12-25 14:16:27 trigproc man-db:amd64 2.10.2-1 <none>
2022-12-25 14:16:27 status half-configured man-db:amd64 2.10.2-1
2022-12-25 14:16:28 status installed man-db:amd64 2.10.2-1
2022-12-25 14:16:28 trigproc libc-bin:amd64 2.35-0ubuntu3.1 <none>
2022-12-25 14:16:28 status half-configured libc-bin:amd64 2.35-0ubuntu3.1
2022-12-25 14:16:28 status installed libc-bin:amd64 2.35-0ubuntu3.1

현재 결과는 위와 같습니다. 

tail이 끝나면 프롬프트로 나오지만 tail은 해보시면 계속 대기 하고 있습니다. 

저는 mc라고 mid-night command를 설치해보겠습니다. 

sudo apt install mc
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  bzip2 libssh2-1 mailcap mc-data mime-support unzip
Suggested packages:
  bzip2-doc arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt poppler-utils python python-boto
  python-tz unar wimtools xpdf | pdf-viewer zip
The following NEW packages will be installed:
  bzip2 libssh2-1 mailcap mc mc-data mime-support unzip
0 upgraded, 7 newly installed, 0 to remove and 20 not upgraded.
Need to get 2321 kB of archives.
After this operation, 8819 kB of additional disk space will be used.
Do you want to continue? [Y/n]

실제로 저는 위 명령어를 내렸습니다. 

tail -f dpkg.log
2022-12-25 14:16:27 configure libcgi-fast-perl:all 1:2.15-1 <none>
2022-12-25 14:16:27 status unpacked libcgi-fast-perl:all 1:2.15-1
2022-12-25 14:16:27 status half-configured libcgi-fast-perl:all 1:2.15-1
2022-12-25 14:16:27 status installed libcgi-fast-perl:all 1:2.15-1
2022-12-25 14:16:27 trigproc man-db:amd64 2.10.2-1 <none>
2022-12-25 14:16:27 status half-configured man-db:amd64 2.10.2-1
2022-12-25 14:16:28 status installed man-db:amd64 2.10.2-1
2022-12-25 14:16:28 trigproc libc-bin:amd64 2.35-0ubuntu3.1 <none>
2022-12-25 14:16:28 status half-configured libc-bin:amd64 2.35-0ubuntu3.1
2022-12-25 14:16:28 status installed libc-bin:amd64 2.35-0ubuntu3.1
2022-12-26 14:18:15 startup archives unpack
2022-12-26 14:18:15 install bzip2:amd64 <none> 1.0.8-5build1
2022-12-26 14:18:15 status half-installed bzip2:amd64 1.0.8-5build1
2022-12-26 14:18:15 status triggers-pending man-db:amd64 2.10.2-1
2022-12-26 14:18:15 status unpacked bzip2:amd64 1.0.8-5build1
2022-12-26 14:18:15 install libssh2-1:amd64 <none> 1.10.0-3
2022-12-26 14:18:15 status triggers-pending libc-bin:amd64 2.35-0ubuntu3.1
2022-12-26 14:18:15 status half-installed libssh2-1:amd64 1.10.0-3
2022-12-26 14:18:15 status unpacked libssh2-1:amd64 1.10.0-3
2022-12-26 14:18:15 install mailcap:all <none> 3.70+nmu1ubuntu1
2022-12-26 14:18:15 status half-installed mailcap:all 3.70+nmu1ubuntu1
2022-12-26 14:18:16 status unpacked mailcap:all 3.70+nmu1ubuntu1
2022-12-26 14:18:16 install mc-data:all <none> 3:4.8.27-1
2022-12-26 14:18:16 status half-installed mc-data:all 3:4.8.27-1
2022-12-26 14:18:16 status unpacked mc-data:all 3:4.8.27-1
2022-12-26 14:18:16 install mc:amd64 <none> 3:4.8.27-1
2022-12-26 14:18:16 status half-installed mc:amd64 3:4.8.27-1
2022-12-26 14:18:16 status unpacked mc:amd64 3:4.8.27-1
2022-12-26 14:18:16 install mime-support:all <none> 3.66
2022-12-26 14:18:16 status half-installed mime-support:all 3.66
2022-12-26 14:18:16 status unpacked mime-support:all 3.66
2022-12-26 14:18:16 install unzip:amd64 <none> 6.0-26ubuntu3.1
2022-12-26 14:18:16 status half-installed unzip:amd64 6.0-26ubuntu3.1
2022-12-26 14:18:16 status unpacked unzip:amd64 6.0-26ubuntu3.1
2022-12-26 14:18:16 startup packages configure
2022-12-26 14:18:16 configure unzip:amd64 6.0-26ubuntu3.1 <none>
2022-12-26 14:18:16 status unpacked unzip:amd64 6.0-26ubuntu3.1
2022-12-26 14:18:16 status half-configured unzip:amd64 6.0-26ubuntu3.1
2022-12-26 14:18:16 status installed unzip:amd64 6.0-26ubuntu3.1
2022-12-26 14:18:16 configure bzip2:amd64 1.0.8-5build1 <none>
2022-12-26 14:18:16 status unpacked bzip2:amd64 1.0.8-5build1
2022-12-26 14:18:16 status half-configured bzip2:amd64 1.0.8-5build1
2022-12-26 14:18:16 status installed bzip2:amd64 1.0.8-5build1
2022-12-26 14:18:16 configure mc-data:all 3:4.8.27-1 <none>
2022-12-26 14:18:16 status unpacked mc-data:all 3:4.8.27-1
2022-12-26 14:18:16 status half-configured mc-data:all 3:4.8.27-1
2022-12-26 14:18:17 status installed mc-data:all 3:4.8.27-1
2022-12-26 14:18:17 configure libssh2-1:amd64 1.10.0-3 <none>
2022-12-26 14:18:17 status unpacked libssh2-1:amd64 1.10.0-3
2022-12-26 14:18:17 status half-configured libssh2-1:amd64 1.10.0-3
2022-12-26 14:18:17 status installed libssh2-1:amd64 1.10.0-3
2022-12-26 14:18:17 configure mailcap:all 3.70+nmu1ubuntu1 <none>
2022-12-26 14:18:17 status unpacked mailcap:all 3.70+nmu1ubuntu1
2022-12-26 14:18:17 status half-configured mailcap:all 3.70+nmu1ubuntu1
2022-12-26 14:18:17 status installed mailcap:all 3.70+nmu1ubuntu1
2022-12-26 14:18:17 configure mime-support:all 3.66 <none>
2022-12-26 14:18:17 status unpacked mime-support:all 3.66
2022-12-26 14:18:17 status half-configured mime-support:all 3.66
2022-12-26 14:18:17 status installed mime-support:all 3.66
2022-12-26 14:18:17 configure mc:amd64 3:4.8.27-1 <none>
2022-12-26 14:18:17 status unpacked mc:amd64 3:4.8.27-1
2022-12-26 14:18:17 status half-configured mc:amd64 3:4.8.27-1
2022-12-26 14:18:17 status installed mc:amd64 3:4.8.27-1
2022-12-26 14:18:17 trigproc man-db:amd64 2.10.2-1 <none>
2022-12-26 14:18:17 status half-configured man-db:amd64 2.10.2-1
2022-12-26 14:18:17 status installed man-db:amd64 2.10.2-1
2022-12-26 14:18:17 trigproc libc-bin:amd64 2.35-0ubuntu3.1 <none>
2022-12-26 14:18:17 status half-configured libc-bin:amd64 2.35-0ubuntu3.1
2022-12-26 14:18:17 status installed libc-bin:amd64 2.35-0ubuntu3.1

mc 하나 까는데 엄청나게 패키지가 설치되네요 ^^

Ctrl 키와 C를 누르시면 빠져 나옵니다. 

오늘은 여기 까지 하고 다음에는 이 아이의 반대인데 head라는 명령어를 한번 공부해 보겠습니다.

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘 제가 앞으로 설치하려는 프로그램 때문에 데이터베이스가 필요해서 우분투 리눅스에 데이터베이스를 설치해보겠습니다. 

우선 당연히 우분투 리눅스에 접속 합니다. ^^

잘 접속 하셨다고 생각하고 깔아 보도록 하겠습니다. ^^

sudo apt update

우선 최신 업데이트가 있는지 확인 합니다. 

보통은 비밀번호를 한번 넣어 줘야 하지만 ^^

저희는 비밀번호를 넣지 않아도 되네요 ^^

sudo apt install mysql-server

업데이트가 끝나면 위 명령어를 입력하시면 됩니다. 

sudo apt install mysql-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite23 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8
  mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0
Suggested packages:
  libdata-dump-perl libipc-sharedcache-perl libbusiness-isbn-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
  libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite23 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8
  mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0
0 upgraded, 28 newly installed, 0 to remove and 20 not upgraded.
Need to get 29.4 MB of archives.
After this operation, 242 MB of additional disk space will be used.
Do you want to continue? [Y/n]

그러면 계속 할꺼냐고 묻는데 ^^ 다연히 Y를 입력 합니다. 

정말 간단하네요 ^^

쭉 설치가 이루어지고, 중간에 커널관련된 메시지가 떴는데 캡쳐를 못해서 ^^ OK 두번 눌러 주시면 됩니다. 

mysql client 까지 잘 설치 되었습니다. 

sudo mysql_secure_installation

보안 설정과 root 비밀번호 설정을 위해서 위 프로그램을 실행해 줍니다. 

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

보안 때문에 비밀번호를 넣는게 좋다 넣겠느냐? 당연히 Y를 누르셔야 합니다. ^^

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

정책적으로 쉬운 비밀번호를 쓸꺼냐 어려운 비밀번호를 쓸꺼냐? 물으면 일단 어려운 비밀번호를 선택해야겠지요 ^^ 하지만, 비밀번호 만들기 규칙이 좀 쉬워야 하니까 다른 방법으로 보안을 신경 써줘야 해서 여기서는 MEDIUM 중간정도를 선택 하겠습니다. ^^

그래서 여기는 1을 넣습니다. 

Please set the password for root here.

New password:

요렇게 나오면 비밀번호를 대소문자를 넣으시고, 특수문자를 썩어서 8자리 이상의 비밀번호를 만드시면 됩니다. 

저는 매일 사용하는 비밀번호가 있어서 넣었습니다. 

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

그랬더니 니가 제공한 비밀번호는 50점 정도 되는데 그래도 쓸래 라고 합니다. 저는 Y를 눌러야지요 ^^

 ... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

New password:

저 처럼 위와 같이 오류가 나면 해당 쉘을 종료 하십시오 ^^

그리고 다른 방법으로 비밀번호를 변경 합니다. ^^

sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '원하는비밀번호';

여기서 원하는 비밀번호는 아까 만든신 비밀번호 규칙을 잘 따르셔야 합니다. ^^

sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

자 이제 제가 원하는 대로 mysql 에 접속이 되네요 간단하게 한번 몇개 명령어만 더 내리고 오늘은 여기까지 글을 마무리 하겠습니다. ^^

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

show databases; 명령어는 mysql에서 사용할 수 있는 데이터베이스 명을 출력해 줍니다. 

 use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

use 명령어는 사용하고자 하는 데이터베이스를  선택해 줍니다. 

 show tables;
+------------------------------------------------------+
| Tables_in_mysql                                      |
+------------------------------------------------------+
| columns_priv                                         |
| component                                            |
| db                                                   |
| default_roles                                        |
| engine_cost                                          |
| func                                                 |
| general_log                                          |
| global_grants                                        |
| gtid_executed                                        |
| help_category                                        |
| help_keyword                                         |
| help_relation                                        |
| help_topic                                           |
| innodb_index_stats                                   |
| innodb_table_stats                                   |
| password_history                                     |
| plugin                                               |
| procs_priv                                           |
| proxies_priv                                         |
| replication_asynchronous_connection_failover         |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version              |
| replication_group_member_actions                     |
| role_edges                                           |
| server_cost                                          |
| servers                                              |
| slave_master_info                                    |
| slave_relay_log_info                                 |
| slave_worker_info                                    |
| slow_log                                             |
| tables_priv                                          |
| time_zone                                            |
| time_zone_leap_second                                |
| time_zone_name                                       |
| time_zone_transition                                 |
| time_zone_transition_type                            |
| user                                                 |
+------------------------------------------------------+
37 rows in set (0.00 sec)

show tables 명령어는 데이터베이스 내에 있는 테이블들을 나열해 줍니다. 

정말 잘 설치 되었습니다. 

Tasks: 116 total,   1 running, 115 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :    964.1 total,     74.0 free,    571.1 used,    319.1 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    231.9 avail Mem

아직 데이터를 넣지 않아서 그렇지만, ^^

CPU는 훌륭하네요 ^^ 1VPU이긴 하지만, 충분히 MySQL이 저혼자 쓸때는 잘 돌아 갑니다. ^^

그리고 메모리는 흑흑흑 실제로 운영을 해봐야겠지만 조금 모자랄 수도 있을 것 같습니다. ^^

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 리눅스에서 파일 내용에 내가 원하는 내용이 있는지 찾아 보는 방법을 알려 드리겠습니다. 

grep은 또 조합을 해서도 많이 사용 합니다. 

오늘은 grep 명령어 만으로 이야기 하는 것과 조합에 대한 맞배기를 좀 보여 드리겠습니다. 

우선 조합을 해보려면, 파일이 좀 필요 합니다. 

2022-12-01, 경기도, 1
2022-12-01, 강원도, 2
2022-12-01, 경상남도, 3
2022-12-01, 경상북도, 4
2022-12-01, 전라남도, 5
2022-12-01, 전라북도, 6
2022-12-01, 충청남도, 6
2022-12-01, 충청북도, 7
2022-12-02, 경기도, 2
2022-12-02, 강원도, 3
2022-12-02, 경상남도, 4
2022-12-02, 경상북도, 5
2022-12-02, 전라남도, 6
2022-12-02, 전라북도, 7
2022-12-02, 충청남도, 8
2022-12-02, 충청북도, 9
2022-12-03, 경기도, 3
2022-12-03, 강원도, 4
2022-12-03, 경상남도, 5
2022-12-03, 경상북도, 6
2022-12-03, 전라남도, 7
2022-12-03, 전라북도, 8
2022-12-03, 충청남도, 9
2022-12-03, 충청북도, 10
2022-12-04, 경기도, 4
2022-12-04, 강원도, 5
2022-12-04, 경상남도, 6
2022-12-04, 경상북도, 7
2022-12-04, 전라남도, 8
2022-12-04, 전라북도, 9
2022-12-04, 충청남도, 10
2022-12-04, 충청북도, 11
2022-12-05, 경기도, 5
2022-12-05, 강원도, 6
2022-12-05, 경상남도, 7
2022-12-05, 경상북도, 8
2022-12-05, 전라남도, 9
2022-12-05, 전라북도, 10
2022-12-05, 충청남도, 11
2022-12-05, 충청북도, 12
2022-12-06, 경기도, 6
2022-12-06, 강원도, 7
2022-12-06, 경상남도, 8
2022-12-06, 경상북도, 9
2022-12-06, 전라남도, 10
2022-12-06, 전라북도, 11
2022-12-06, 충청남도, 12
2022-12-06, 충청북도, 13
2022-12-07, 경기도, 7
2022-12-07, 강원도, 8
2022-12-07, 경상남도, 9
2022-12-07, 경상북도, 10
2022-12-07, 전라남도, 11
2022-12-07, 전라북도, 12
2022-12-07, 충청남도, 13
2022-12-07, 충청북도, 14
2022-12-08, 경기도, 8
2022-12-08, 강원도, 9
2022-12-08, 경상남도, 10
2022-12-08, 경상북도, 11
2022-12-08, 전라남도, 12
2022-12-08, 전라북도, 13
2022-12-08, 충청남도, 14
2022-12-08, 충청북도, 15
2022-12-09, 경기도, 9
2022-12-09, 강원도, 10
2022-12-09, 경상남도, 11
2022-12-09, 경상북도, 12
2022-12-09, 전라남도, 13
2022-12-09, 전라북도, 14
2022-12-09, 충청남도, 15
2022-12-09, 충청북도, 16
2022-12-10, 경기도, 10
2022-12-10, 강원도, 11
2022-12-10, 경상남도, 12
2022-12-10, 경상북도, 13
2022-12-10, 전라남도, 14
2022-12-10, 전라북도, 15
2022-12-10, 충청남도, 16
2022-12-10, 충청북도, 17

위와 같은 파일이 있다고 생가갛겠습니다. 

그런데 생각만 하면 자료를 못 만드니 따라하시면 파일이 생깁니다. ^^

vi temp.txt

리눅스에서 위와 같이 치십시오

vi 따로 글을 몇개 적어 보겠습니다. 

오늘은 따라 하시면 됩니다. 

리눅스에서 위 명령어를 입력 합니다. 

그러면 위에서 보이는 것처럼 vi 가 열립니다. 파일이 동일한 파일명으로 존재하면 파일의 내용이 나오겠지만, 우리는 새로운 파일을 만든다고 가정하므로, 저 그림과 비슷해야 합니다. 

그럼 저기서 영어 자판의 소문자 "i"를 타이핑 합니다. 

그러면, 아래에 INSERT 라고 나올 겁니다. 

vi가 입력모드로 변경 된 것입니다. 

앞의 네모에서 복사를 하셨다면, PuTTY를 사용하신다는 전제 하에서 오른쪽 마우스를 클릭 합니다. 

요렇게 나올 겁니다. 

저기서 입력모드를 빠져 나와합니다. 키보드의 "Esc" 키를 타이핑 하십시오.

위와 같이 됩니다. 

여기서 :wq 를 순서대로 입력하고 엔터를 칩니다. 

그림과 같이 타이핑이 쳐질것이고, 저기서 엔터만 누르시면 됩니다. 

ls -al
total 84
drwxr-x--- 4 ubuntu ubuntu 4096 Dec 25 11:41 .
drwxr-xr-x 4 root   root   4096 Dec 19 13:19 ..
-rw------- 1 ubuntu ubuntu 1046 Dec 24 15:28 .bash_history
-rw-r--r-- 1 ubuntu ubuntu  220 Jan  6  2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan  6  2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Dec 19 14:28 .cache
-rw------- 1 ubuntu ubuntu   20 Dec 25 11:34 .lesshst
-rw-r--r-- 1 ubuntu ubuntu  807 Jan  6  2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Dec 19 13:19 .ssh
-rw------- 1 ubuntu ubuntu 2986 Dec 25 11:41 .viminfo
-rw-rw-r-- 1 ubuntu ubuntu   54 Dec 24 11:25 hello.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello1.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello2.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello3.txt
-rw-rw-r-- 1 ubuntu ubuntu 2216 Dec 25 11:41 temp.txt
-rw-rw-r-- 1 ubuntu ubuntu 1099 Dec 24 01:06 test.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 test2.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 text.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow1.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow2.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow3.txt

파일을 찾아보면 저기 temp.txt가 보입니다. ^^

그러면 이제 grep을 이용해서 몇가지 일을 해보겠습니다. 

오늘은 가장 간단하게 할 것이므로 다음과 같이 입력해 보십시오.

grep "경상남도" *

위와 같이 입력 합니다. 

grep "경상남도" *
temp.txt:2022-12-01, 경상남도, 3
temp.txt:2022-12-02, 경상남도, 4
temp.txt:2022-12-03, 경상남도, 5
temp.txt:2022-12-04, 경상남도, 6
temp.txt:2022-12-05, 경상남도, 7
temp.txt:2022-12-06, 경상남도, 8
temp.txt:2022-12-07, 경상남도, 9
temp.txt:2022-12-08, 경상남도, 10
temp.txt:2022-12-09, 경상남도, 11

위와 같이 나옵니다. ^^

어느파일에 temp.txt에 우리 원하는 경상남도가 들어 있다네요.^^

리눅스에 표출 입출력에 대해서 좀 더 설명을 해야겠지만 

위 명령어로 경상남도.txt를 만들어 보겠습니다. 

grep "경상남도" * > 경상남도.txt

실제로 실행을 하고 저희가 cat에서 배워던 내용까지 한번 해서 다시 출력을 해보겠습니다. 

grep "경상남도" * > 경상남도.txt
ubuntu@instance:~$ cat 경상남도.txt
temp.txt:2022-12-01, 경상남도, 3
temp.txt:2022-12-02, 경상남도, 4
temp.txt:2022-12-03, 경상남도, 5
temp.txt:2022-12-04, 경상남도, 6
temp.txt:2022-12-05, 경상남도, 7
temp.txt:2022-12-06, 경상남도, 8
temp.txt:2022-12-07, 경상남도, 9
temp.txt:2022-12-08, 경상남도, 10
temp.txt:2022-12-09, 경상남도, 11
temp.txt:2022-12-10, 경상남도, 12

파일에 위와 같이 나옵니다. 

조금 마음에 안드는 것이 ^^ 저 앞에 파일 이름을 출력한게 마음에 안듭니다. 

그래서 grep의 옵션을 사용해서 파일 이름을 지워 버리겠습니다. ^^

grep -h "경상남도" temp.txt > 경상남도.txt

-h가 no-file-name 이라고 되어 있습니다. ^^

지금 현재 경상남도 파일이 생겨서 * 파일로 하면 파일명이 있는게 나오므로, temp.txt 만 찍어서 했습니다. 

 grep -h "경상남도" temp.txt > 경상남도.txt
ubuntu@instance-:~$ cat 경상남도.txt
2022-12-01, 경상남도, 3
2022-12-02, 경상남도, 4
2022-12-03, 경상남도, 5
2022-12-04, 경상남도, 6
2022-12-05, 경상남도, 7
2022-12-06, 경상남도, 8
2022-12-07, 경상남도, 9
2022-12-08, 경상남도, 10
2022-12-09, 경상남도, 11

결과는 위와 같습니다.

여러분들은 경상남도 뿐 아니라 다른 곳으로 한번 해보십시오.^^

자 그런데, 아까 반대로 파일이름은 봤습니다. 그런데 이게 몇 Line에 있는지를 알고 싶으면 어떻게 해야 할까요?

 grep -n "경상남도" temp.txt
 grep -n "경상남도" temp.txt
3:2022-12-01, 경상남도, 3
11:2022-12-02, 경상남도, 4
19:2022-12-03, 경상남도, 5
27:2022-12-04, 경상남도, 6
35:2022-12-05, 경상남도, 7
43:2022-12-06, 경상남도, 8
51:2022-12-07, 경상남도, 9
59:2022-12-08, 경상남도, 10
67:2022-12-09, 경상남도, 11
75:2022-12-10, 경상남도, 12

요렇게 하시면 젤 앞에 : 앞에 있는 수자가 라인 넘버 입니다. ^^

자 이제 다시 vi 도 연습 해볼 겸 해서 실제로 3라인에 경상남도가 있는지 한번 알아보겠습니다.

vi temp.txt

위와 같이 그냥 치십시오.

"백문이 불여 일타" 라고 ^^ 열심히 치시다 보면, 손가락이 기억을 할겁니다 .^^

이렇게 봤을때 그냥 눈으로 보셔도 ^^ 3라인데 있네요 ㅎㅎㅎ

하지만 확실하게 하기 위해서 vi 에서 :3 을 입력하고, 엔터를 쳐 보십시오.

: 하고 숫자를 치시면 해당라인으로 커서를 옮겨 줍니다. 그러니까 저희는 3라인으로 이동 시켰으니 정확하게 3라인에 경상남도가 있습니다. ^^

그리고 또한가지 더 있습니다. 

:set nu 라고 vi 화면에서 입력하고 엔터를 치십시오.

제일 압줄에 줄 번호를 달아 줍니다. ^^

3라인에 확실하게 있네요 ㅎㅎㅎ

:set nonu를 입력하십시오.

다시 줄번호를 꺼줍니다. 

이번에는 vi에서 빠져 나가겠습니다. 

앞에서 :wq 를 하셔도 되겠지만, 

저희는 :q! 를 입력합니다. 

vi에서 문서를 보기만 하셨으면 상관이 없는데 실수로 뭔가를 하셨다면 초기화 해줍니다. 그래서 !는 강제로 입니다. 

강제로 나가겠다는 뜻입니다. ^^

:q! 를 입력하시고, 엔터를 치시면 빠져 나갑니다. 

오늘은 grep에 대해서 알아 보았습니다. 

다음 시간에 tail 이라는 명령어를 알아 볼 것인데, 이때 grep을 어떻게 조합해서 사용하는지 한번 알아 보겠습니다. ^^

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 지난 번에 글에서 사용하다가 나온 echo에 대해서 말씀 드리겠습니다. 

ECHO(1)                                                                                                                                                                   User Commands                                                                                                                                                                   ECHO(1)

NAME
       echo - display a line of text

SYNOPSIS
       echo [SHORT-OPTION]... [STRING]...
       echo LONG-OPTION

DESCRIPTION
       Echo the STRING(s) to standard output.

       -n     do not output the trailing newline

       -e     enable interpretation of backslash escapes

       -E     disable interpretation of backslash escapes (default)

       --help display this help and exit

       --version
              output version information and exit

       If -e is in effect, the following sequences are recognized:

       \\     backslash

       \a     alert (BEL)

       \b     backspace

       \c     produce no further output

       \e     escape

       \f     form feed

       \n     new line

       \r     carriage return

       \t     horizontal tab

       \v     vertical tab

       \0NNN  byte with octal value NNN (1 to 3 digits)

       \xHH   byte with hexadecimal value HH (1 to 2 digits)

echo 를 man 페이지에서 보면 위와 같이 나옵니다. ^^

man echo

위와 같이 Linux에 접속해서 입력해보시면 됩니다. ^^

한글로 셋팅된 리눅스에서는 한글로 나옵니다. 

텍스트를 출력한다고 되어 있습니다. 

echo [옵션들] "원하는문장|원하는변수"

또한, 특수 문자를 지원을 하네요 ^^

간단하게 매일 언어 공부하는 책에서 본 Hello World를 찍어 보겠습니다. Hello echo world!! 정도를 찍어 볼까요 ^^

echo "Hello echo world."

위 명령어를 리눅스에 입력해 보십시오 ^^

echo "Hello echo world."
Hello echo world.

위와 같이 나옵니다. ^^ 잘 찍혔네요 

그런데 단순히 echo는 리눅스에서 출력만한다.

저건 일반적으로 필요가 없을 것 같습니다. 

그렇습니다. echo는 저희가 컴퓨터를 사용하게 되면 알아야 하는 PATH라던지 여러가지 환경 변수들을 알아 볼때 출력해 볼 수 있습니다. 

음 글을 적다 보니 많은 글쓸 꺼리가 튀어 나오네요 ^^

리눅스의 환경 변수 설정도 한번 적어 보겠습니다. 

env
HOME=/home/ubuntu
USER=ubuntu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

여러분들은 더 나올껀데 공개해도 되는 것만 일단 공개해 봅니다. 

Oracle 클라우드를 사용하시면 동일하게 보일 수 있습니다. 

저기 젤앞에 대문자로 적혀 있는 아이들이 환경 변수 입니다. 이 환경 변수 앞에 echo를 하면서 $를 붙여 주면 개별적으로 출력해 줍니다. 

그럼 저 세가지하고 저기는 안나오지만, SHELL이라는 환경변수를 한번 찍어 보겠습니다. 

echo $HOME
echo $PATH
echo $USER
echo $SHELL

위와 같이 리눅스에 치시면 됩니다. ^^

echo $HOME
echo $PATH
echo $USER
echo $SHELL
/home/ubuntu
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ubuntu
/bin/bash

저는 실행 했더니 위와 같이 나왔씁니다. ^^

여러분들은 다르게 나오시나요?

저 아이들은 기본적으로 환경 변수이구요.

쉘 스크립트를 작성할때 변수를 정의 할 수 있습니다. 

저희는 말씀은 안드렸지만, 저기 있는 bash 쉘입니다. ^^

그래서 

변수를 만들어 보겠씁니다. 

VAR1="111"

위와 같이 리눅스에 치십시오 ^^

이제 아시겠죠 저 = 앞에 있는 아이 앞에다가 $를 붙이면 출력 된다는 것을 ^^

echo $VAR1
 echo $VAR1
111

실행하면 위와 같이 나오네요 ^^

변수 설정이 잘되고 출력도 잘 됩니다.

오늘은 변수와 출력으로서 만들었지만, 다음에는 조금 다른 방법으로 변수를 활용해 보겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

최근에 Linux에 뭔가를 많이 깔아보고 실험해보고 블로그 글도 써보고 있습니다. 

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637
리눅스/Linux VMWARE Workstation에 우분투/Ubuntu 16.04 설치하기 https://talkit.tistory.com/593

앞에서 18.04 하고 16.04는 VMWARE에 설치하는 모습을 보여 드렸습니다. 

이번에는 20.04를 설치해보겠습니다. 

거의 동일 합니다. ^^

Ubuntu 20.04.5 LTS (Focal Fossa) (kakao.com)

 

Ubuntu 20.04.5 LTS (Focal Fossa)

Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m

mirror.kakao.com

한국에서 우분투/Ubuntu 공식 미러는 느려서 T.T 저는 kakao 미러를 사용하고 있습니다. 

위 주소로 접속하시면, 

이런화면이 나옵니다. 우선 저기 64-bit PC(AMD64) desktop image를 다운로드 합니다. 

대충 이번에는 약 8분 정도 걸린다네요 ^^

다운을 다 받으셨으면 설치를 진행해 보겠습니다. 

Create a New Virtual Machine를 클릭해서 가상 머신을 만들기 시작 합니다. 

다운로드 받은 20.04 iso 파일을 선택 합니다. 

이름과 아이디 패스워드를 잘 입력 합니다. Confirm에는 비밀번호를 한번 더 동일하게 입력 하십시오.

Virtual Machine 이름과 설치 위치를 적당하게 설정하십시오.

Next 

Disk Size를 고르십시오.

저는 저기를 1000GB로 변경해주었습니다. 

여기서 저는 Customize Hardware를 클릭해서 하드웨어 스펙을 변경 했습니다. 

메로리를 16GB로 했구요. 4GB 이상 정도를 권장 합니다. 

CPU는 16개로 변경 했습니다. 

네트워크는 Bridged 로 변경 했습니다. 

Close 눌러 주시고 다시 설치화면으로 돌아가서

Finish를 클릭 합니다. 

일단 Ubuntu가 뜨고 있습니다. ^^

자동으로 설치를 지원해 줍니다. 

열심히 설치를 해주고 있습니다. 

잠깐 어디를 갔다오니 ^^

잘 설치가 되어 있습니다. 

아까 입력한 비밀번호를 넣어 보니 잘 접속이 됩니다. 

뭐 클라우드 계정에 접속 하라고 설정하게 되어 있는데 우리는 그냥 Skip 합니다. ^^

설정은 귀찮으니 Next

리포트 보낼꺼냐고 물어서 안보낸다에 체크 하고 Next

Location 서비스가 필요하신 분은 체크 하시고 저는 필요 없어서 Next

프로그램 설치할꺼냐고 묻는데 저는 일단 조금씩 쉘로 설치 할꺼라서 Done을 눌렀습니다. 

위 두가지의 순서느 어떻게 될지 모르겠습니다. 

우선 22.04로 업그레이드 할꺼냐? Don't Upgrade를 선택 합니다. 또는 Ask Me Later 저는 20.04를 사용할꺼라서요 ^^

나중에 업그레이드 하고 싶으면, Upgrade를 클릭하라고 나오네요 ^^ OK를 클릭 합니다. 

앞쪽에 있는 아이는 Install Now를 선택합니다. 저희가 설치한 20.04 버전에서 마이너 업그레이드 한 것들이니까요 ^^

저기서 비밀번호를 넣고 엔터치시면 업그레이드를 시작 합니다. 

업그레이드 될때까지 기다리시면 됩니다. ^^

업데이트가 끝나고 나니 껏다가 켜라네요 Restart Now를 클릭 하시면 껏다가 켜집니다. ^^

두가지만 알아보고 여기서 끝내겠습니다. 

CPU와 RAM  크기 입니다. 

왼쪽 하단에 보시면 저런 아이콘이 보입니다. 

클릭하십시오.

저기서 나온 프로그램들 중에 System Monitor를 클릭합니다. 

그러면 위와 같이 나올껍니다. 저기서 Resource를 눌러 주십시오.

저기 보시면 CPU 16개, 메모리 약 16GB가 보이네요 ^^

그리고, 그 옆에 File Systems를 클릭하시면 1.1TB 정도 할당되어 있는것이 보일 껍니다. 

제가 원하는대로 장비는 잘 만들어 졌습니다. 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

다른 클라우드에서 가상 서버를 만들어 보셨나요?

그렇다면, 아마 좀 저렴한 서비스는 웹에서 아이디/패스워드를 설정 하셨을 겁니다. 

하지만, 지난 번 글

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(2) VM 인스턴스 만들기 Let's make free VPS on Oracle Cloud.(2) Create VM Instance :: 가야태자의 IT이야기 (tistory.com)

에서 비밀번호를 설정한 기억이 없습니다. ^^

제가 SSH 키를 잘 보관해 두시라는 이야기 했지만, 어디다가 비밀번호를 넣어라는 말씀은 드린적이 없네요

그래도 접속이 되는지만 일단 확인 해보겠습니다. 

혹시나 접속이 안된다는 메시지가 나온다면 putty를 최신 버전으로 업그레이드 하십시오.

[무료소프트웨어] 무료 보안쉘 클라이언트 PuTTY 최신 버전 다운로드 및 설치하기. How to Install the latest version PuTTY that is free Secure Shell Client. :: 가야태자의 IT이야기 (tistory.com)

접속이 되시면, Accept를 클릭하십시오. 머 매번 저걸 누르실 필요는 없으니까요 ^^

그려면 화면에 login as : 이렇게 나올텐데 여기에 아까 기억해두신 아이디를 입력하십시오.

기본적으로 ubuntu 입니다. ^^

키가 없기 때문에 ^^ 위와 같이 접속이 끊겨 버릴 겁니다. ^^

이제 키를 만들어 보겠습니다. 

최신 버전으로 설치하신 PuTTY에서 PuTTYgen이라는 프로그램을 실행 합니다. 

요렇게 생겼습니다. 

Conversions >> Import key를 클릭하십시오.

그리고 인스턴스만들면서 받은 Oracle에서 받은 key 파일을 선택하십시오.

Save public key와 Save private key를 클릭해서 다시 잘 저장해둡니다. 

저는 파일명은 public key는 oraclevm2.pub로 private key는 oraclevm2.ppk 로 저장 하였습니다. 

이제 다시 putty로 돌아가겠습니다. 

새로 설치한 putty를 여시는 것이 좋습니다. ^^

왼쪽에 있는 메뉴 중에서 Connection SSH Auth Credntials 를 클릭하십시오.

Privte key file for authentication: 에 앞에서 저장한 ppk 파일을 선택 합니다. 

그리고 다시 Session으로 돌아가서 Save버튼을 클릭하시고 Open버튼을 클릭 합니다. 

Open을 클릭하시면 

위와 같이 잘 접속이 됩니다. 

이제 제가 가르쳐 드리고 있는 여러가지 Linux 명령어들을 실험해 보시면 됩니다. ^^

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

요즘 리눅스에서 파일을 다루는 작업에 관한 글들을 적고 있습니다. 

[리눅스/Linux] 파일 이동시키기(Move File)/이름 바꾸기(Change Name) mv 명령어(Command)  https://talkit.tistory.com/667

[리눅스/Linux] 파일 복사(Copy File) cp 명령어(Command) https://talkit.tistory.com/668

위와 같은 글들을 적고 있습니다. 

오늘을 파일을 어떻게 압축할 것인가에 대해서 적어 보겠습니다.

리눅스 압축 프로그램의 대표는 gzip이라는 프로그램과 tar라는 프로그램 또는 두 가지 프로그램을 통합해서 사용합니다. 

그 중에서 오늘은 tar에 대해서 설명을 드리겠습니다. 

tar는 솔직히 압축 프로그램이 아닙니다. 파일 여러개를 하나마의 테이프에다가 묶는 것입니다. 

tar 명령어를 사용하는 방법은 아래와 같습니다. 

tar [옵션들] 압축파일명.tar[.gz|bz2] 압축하고자하는파일/디렉토리들

위와 같이 사용합니다. 

여기서는 옵션들이 중요한데요. 몇 가지 옵션을 살펴 보겠습니다. 

제가 공부하고 사용하고 있는 옵션들은

c,j,z,v,f,p,x,t

위의 옵션들만 설명 하겠습니다. 

c 는 create 즉 압축파일을 만듭니다. 

j는 bz2  파일의 압축을 풀 수 있습니다. *.tar.bz2 같은 파일들입니다. 

z는 gz 또는 tgz로 끝나는 파일들을 풀때 사용합니다. 

v는 압축을 하거나 풀 때 행위를 보여 주라는 의미 입니다. 

f 는 파일에 저장한다는 의미이구요. 

p 는 권한을 유지한다는 의미이구요.

x 는 extract 즉 압축 해제릉ㄹ 의미 합니다. 

t 는 압축해제는 하지 않고 안에 있는 파일 목록을 보여 줍니다.

기본적으로 tar 명령어로 압축을 해보겠습니다. 

tar cvfp test.tar test*.txt
tar cvfp test.tar test.txt test_target.txt

.tar 뒤에다가 파일들을 나열해줘도 되지만 저렇게 test로 시작하는 txt 파일만 압축하려고 할때는 저렇게 하시면 됩니다.

그리고, 두번째 줄 처럼 압축하고자 하는 파일을 나열해주셔도 됩니다. 편하신 방법으로 하시면 됩니다. 

[talkit@server02 test]$ ls -al
합계 8
drwxrwxr-x 5 talkit talkit  88 12월 17 02:26 .
drwx------ 6 talkit talkit 168 12월 17 02:46 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit  45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@server02 test]$ tar cvfp test.tar test*.txt
test.txt
test_target.txt
[talkit@server02 test]$ ls -al
합계 20
drwxrwxr-x 5 talkit talkit   104 12월 18 16:40 .
drwx------ 6 talkit talkit   168 12월 17 02:46 ..
drwxrwxr-x 2 talkit talkit     6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit    45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit    45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit 10240 12월 18 16:40 test.tar
-rw-rw-r-- 1 talkit talkit    28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit    28 12월 17 02:18 test_target.txt

 처음에 파일목록에는 압축 파일이 없습니다. 

tar 명령어로 실제로 압축을 했을때 test.tar 파일이 생겼습니다. 

그런데 압축을 하면 파일 사이즈가 비슷하거나, 줄어 들어야 하는데 보시는 바와 같이 크기가 늘어 났습니다. 

28 + 28 = 56 인데

압축파일의 사이즈는 10240 이네요

이걸 잘 기억해 두시고, 다음 명령어를 한번 실행해보겠습니다. 

gzip을 연동해서 할때는 z 를 옵션에 넣어 주시면 됩니다. 

tar czvfp test1.tar.gz test*.txt
tar czvfp test2.tar.gz test*.txt target

위에서 알려 드렸으니 파일을 나열 하는 것은 하지 않겠습니다. 

파일 사이즈 비교를 위해서 원래 파일을  test1.tar.gz 로압축하고, 

이번에는 target 디렉토리도 넣어서 test2.tar.gz 로 압축 해보겠습니다. 

[talkit@server02 test]$ ls -al
합계 20
drwxrwxr-x 5 talkit talkit   104 12월 18 16:47 .
drwx------ 6 talkit talkit   168 12월 17 02:46 ..
drwxrwxr-x 2 talkit talkit     6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit    45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit    45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit 10240 12월 18 16:40 test.tar
-rw-rw-r-- 1 talkit talkit    28 12월 18 16:47 test.txt
-rw-rw-r-- 1 talkit talkit    28 12월 17 02:18 test_target.txt
[talkit@server02 test]$ tar czvfp test1.tar.gz test*.txt
test.txt
test_target.txt
[talkit@server02 test]$ tar czvfp test2.tar.gz test*.txt target
test.txt
test_target.txt
target/
target/test.txt
target/test_target.txt
[talkit@server02 test]$ ls -al
합계 28
drwxrwxr-x 5 talkit talkit   144 12월 18 16:48 .
drwx------ 6 talkit talkit   168 12월 17 02:46 ..
drwxrwxr-x 2 talkit talkit     6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit    45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit    45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit 10240 12월 18 16:40 test.tar
-rw-rw-r-- 1 talkit talkit    28 12월 18 16:47 test.txt
-rw-rw-r-- 1 talkit talkit   167 12월 18 16:48 test1.tar.gz
-rw-rw-r-- 1 talkit talkit   233 12월 18 16:48 test2.tar.gz
-rw-rw-r-- 1 talkit talkit    28 12월 17 02:18 test_target.txt

결과는 위와 같습니다.  test.tar와 test1.tar.gz의 사이즈는 차이가 납니다. 원본이 워낙 작아서 그래도 원본보다는 크네요 ^^ 디렉토리를 넣었을때도 압축이 된거 보이시죠 ^^

이제 압축을 했으니 압축을 풀어 보겠습니다.

참 압축을 풀기 전에 압축 파일에 들어 있는 파일을 한번 보겠습니다. 

위의 옵션 중에 t 입니다. 

tar tvfp test.tar
tar tvfp test1.tar.gz
tar tvfp test2.tar.gz

실행 결과는 아래와 같습니다.

[talkit@server02 test]$ tar tvfp test.tar
-rw-rw-r-- talkit/talkit    28 2022-12-17 02:16 test.txt
-rw-rw-r-- talkit/talkit    28 2022-12-17 02:18 test_target.txt
[talkit@server02 test]$ tar tvfp test1.tar.gz
-rw-rw-r-- talkit/talkit    28 2022-12-18 16:47 test.txt
-rw-rw-r-- talkit/talkit    28 2022-12-17 02:18 test_target.txt
[talkit@server02 test]$ tar tvfp test2.tar.gz
-rw-rw-r-- talkit/talkit    28 2022-12-18 16:47 test.txt
-rw-rw-r-- talkit/talkit    28 2022-12-17 02:18 test_target.txt
drwxrwxr-x talkit/talkit     0 2022-12-17 02:25 target/
-rw-rw-r-- talkit/talkit    28 2022-12-17 02:25 target/test.txt
-rw-rw-r-- talkit/talkit    28 2022-12-17 02:25 target/test_target.txt

잘 보이시죠 압축을 안풀어도 tvfp 명려어를 사용하면 우리가 압축하기전 형태대로 보입니다. 

mkdir extract
mv test.tar extract
mkdir extract1
mv test1.tar.gz extract1
mkdir extract2
mv test2.tar.gz extract2

extract라는 디렉토리를 만들고, 압축 파일을 이동 시킨 다음에 실제로 압축을 풀어 보겠습니다. 

동일한 파일들을 모두 압축해서 일부를 폴더를 만들었습니다. 

실제로는 A 서버에서 압축해서 B서버로 간다던지 아니면, A서버에 있는 내용을 개발 컴퓨터로 가져와서 압축을 푼다던지 할꺼라서 저렇게 만들지는 않겠지만, 그래도 실제 폴더를 만들고 그 속에 풀어야겠지요 ^^

[talkit@server02 test]$ ls -al
합계 8
drwxrwxr-x 8 talkit talkit 135 12월 18 16:57 .
drwx------ 6 talkit talkit 168 12월 17 02:46 ..
drwxrwxr-x 2 talkit talkit  22 12월 18 16:57 extract
drwxrwxr-x 2 talkit talkit  26 12월 18 16:57 extract1
drwxrwxr-x 2 talkit talkit  26 12월 18 16:57 extract2
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit  45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit  28 12월 18 16:47 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@server02 test]$ cd extract
[talkit@server02 extract]$ ls
test.tar
[talkit@server02 extract]$ tar xvfp test.tar
test.txt
test_target.txt
[talkit@server02 extract]$ ls -al
합계 20
drwxrwxr-x 2 talkit talkit    61 12월 18 16:58 .
drwxrwxr-x 8 talkit talkit   135 12월 18 16:57 ..
-rw-rw-r-- 1 talkit talkit 10240 12월 18 16:40 test.tar
-rw-rw-r-- 1 talkit talkit    28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit    28 12월 17 02:18 test_target.txt
[talkit@server02 extract]$ cd ../extract1
[talkit@server02 extract1]$ ls
test1.tar.gz
[talkit@server02 extract1]$ tar xzvfp test1.tar.gz
test.txt
test_target.txt
[talkit@server02 extract1]$ ls -al
합계 12
drwxrwxr-x 2 talkit talkit  65 12월 18 16:58 .
drwxrwxr-x 8 talkit talkit 135 12월 18 16:57 ..
-rw-rw-r-- 1 talkit talkit  28 12월 18 16:47 test.txt
-rw-rw-r-- 1 talkit talkit 167 12월 18 16:48 test1.tar.gz
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@server02 extract1]$ cd ../extract2
[talkit@server02 extract2]$ ls -al
합계 4
drwxrwxr-x 2 talkit talkit  26 12월 18 16:57 .
drwxrwxr-x 8 talkit talkit 135 12월 18 16:57 ..
-rw-rw-r-- 1 talkit talkit 233 12월 18 16:48 test2.tar.gz
[talkit@server02 extract2]$ tar xzvfp test2.tar.gz
test.txt
test_target.txt
target/
target/test.txt
target/test_target.txt
[talkit@server02 extract2]$ ls -al
합계 12
drwxrwxr-x 3 talkit talkit  79 12월 18 16:58 .
drwxrwxr-x 8 talkit talkit 135 12월 18 16:57 ..
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
-rw-rw-r-- 1 talkit talkit  28 12월 18 16:47 test.txt
-rw-rw-r-- 1 talkit talkit 233 12월 18 16:48 test2.tar.gz
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@server02 extract2]$

순서대로 폴더 내에 들어가서 압축을 해제하고 해제된 실제파일들이 보이는 것을 보았습니다. ^^

압축을 어떻게 하고 압축을 어떻게 푸시는지 이제 아시겠지요.

저는 또 다른 리눅스 이야기로 찾아오겠습니다. ^^

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 리눅스에서 파일을 합치는 방법을 좀 알아 보도록 하겠습니다 

[리눅스/Linux] 파일 복사(Copy File) cp 명령어(Command) https://talkit.tistory.com/668

리눅스/Linux cat 간단한 텍스트 파일 보기 Simple Text File Viewer https://talkit.tistory.com/675

우선 파일을 합치기 위해서 몇개의 파일을 만들도록 하겠습니다. 

echo "안녕하세요 1" > hello1.txt
echo "안녕하세요 2" > hello2.txt
echo "안녕하세요 3" > hello3.txt
echo "노랑색 1" > yellow1.txt
echo "노랑색 2" > yellow2.txt
echo "노랑색 3" > yellow3.txt

리눅스에 접속하셔서 위 명령어를 입력해 주십시오.

한줄 한줄 해도 됩니다만 ^^

전체를 복사해서 붙여 넣으시면 됩니다. ^^

Putty를 사용하신다면, 복사하시고 <Shift> + <Insert> 를 누르시면 붙여 넣어 집니다. 

마우스로 오른쪽 클릭을 한번 하셔도 붙여 넣어 집니다. ^^

ubuntu@instance:~$ echo "안녕하세요 1" > hello1.txt
echo "안녕하세요 2" > hello2.txt
echo "안녕하세요 3" > hello3.txt
echo "노랑색 1" > yellow1.txt
echo "노랑색 2" > yellow2.txt
echo "노랑색 3" > yellow3.txt
ubuntu@instance:~$ ls -al
total 72
drwxr-x--- 4 ubuntu ubuntu 4096 Dec 24 11:16 .
drwxr-xr-x 4 root   root   4096 Dec 19 13:19 ..
-rw-r--r-- 1 ubuntu ubuntu  220 Jan  6  2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan  6  2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Dec 19 14:28 .cache
-rw------- 1 ubuntu ubuntu   20 Dec 24 11:13 .lesshst
-rw-r--r-- 1 ubuntu ubuntu  807 Jan  6  2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Dec 19 13:19 .ssh
-rw------- 1 ubuntu ubuntu 1955 Dec 24 01:13 .viminfo
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello1.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello2.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello3.txt
-rw-rw-r-- 1 ubuntu ubuntu 1099 Dec 24 01:06 test.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 test2.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 text.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow1.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow2.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow3.txt

위와 같은 결과가 나올껍니다. 

실제로 hello1 파일과 yellow1 파일들이 생겼습니다.

그러면 저 친구들은 표준 출력을 해보십시오. ^^

더보기

cat hello1.txt
cat hello2.txt
cat hello3.txt
cat yellow1.txt
cat yellow2.txt
cat yellow3.txt

실제로 해보시면 아래와 같이 나옵니다. ^^

한줄 한줄 하셨으면 한줄씩 출력 될껍니다. 

더보기

cat hello2.txt
cat hello3.txt
cat yellow1.txt
cat yellow2.txt
cat yellow3.txt
안녕하세요 1
안녕하세요 2
안녕하세요 3
노랑색 1
노랑색 2
노랑색 3

자 그런데 다음 명령어도 가능 합니다. 

더보기

cat hello*.txt yellow*.txt

위와 같이도 가능 합니다. 

더보기

cat hello*.txt yellow*.txt
안녕하세요 1
안녕하세요 2
안녕하세요 3
노랑색 1
노랑색 2
노랑색 3

그러면 이제 이글의 제목인 파일 합치기에 대해서 알아 보겠습니다. 

먼저 방법은 cat을 이용하면 아래와 같습니다. 

시나리오는 hello로 시작하는 텍스트 파일을 hello.txt 파일로 만드는 것입니다. 

cat hello*.txt > hello.txt
cat hello1.txt hello2.txt hello3.txt > hello.txt

위 두가지 명령어로 가능 합니다. 

저는 위의 명령어를 주로 사용하기 때문에 한번 해보겠습니다. 맨 마지막에 cat로 한번 hello.txt를 출력도 해보겠습니다. 

더보기

ubuntu@instance-:~$ cat hello*.txt > hello.txt
ubuntu@instance-:~$ cat hello.txt
안녕하세요 1
안녕하세요 2
안녕하세요 3

제가 실행한것을 보면 세개의 hello 파일들이 합쳐져서 하나의 파일로 만들어 졌습니다. 

자 이제 여러분들도 해보십시오. 동일하게 yellow 로 시작하는 파일들을 합쳐 보십시오.

더보기

cat yellow*.txt > yellow.txt

cat yellow.txt

위와 같이 실행하면 합쳐 집니다. 

오늘은 cat을 이용해서 파일을 합치는 방법에 대해서 알아 보았습니다. 다음에는 cat과 grep을 이용해서 필터링 하는 방법을 한버 써 보도록 하겠습니다. 

리눅스에서 cat의 활용도가 높네요 ^^

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

오늘은 리눅스 명령어 중에 cat에 대해서 알아 보도록 하겠습니다. 

NAME
       cat - concatenate files and print on the standard output

SYNOPSIS
       cat [OPTION]... [FILE]...

DESCRIPTION
       Concatenate FILE(s) to standard output.

       With no FILE, or when FILE is -, read standard input.

       -A, --show-all
              equivalent to -vET

       -b, --number-nonblank
              number nonempty output lines, overrides -n

       -e     equivalent to -vE

       -E, --show-ends
              display $ at end of each line

       -n, --number
              number all output lines

       -s, --squeeze-blank
              suppress repeated empty output lines

       -t     equivalent to -vT

       -T, --show-tabs
              display TAB characters as ^I

       -u     (ignored)

       -v, --show-nonprinting
              use ^ and M- notation, except for LFD and TAB

       --help display this help and exit

       --version
              output version information and exit

EXAMPLES
       cat f - g
              Output f's contents, then standard input, then g's contents.

       cat    Copy standard input to standard output.

리눅스 man 페이지 즉 리눅스가 기본 적으로 제공하는 매뉴얼에 위와 같이 나와 있습니다. 

저게 영어로 직역하면 파일을 합처 주거나 표준출력으로 파일을 출력해준다라고 되어 있습니다. 

제가 알려 드리려고 하는 것은 파일을 출력해준다인데 T.T 파일을 합친다는 한번 다시 알아 봐야겠습니다. 방법과 개념은 알 것 같습니다. 

리눅스에서는 파일을 보려면, X-Windows에서는 gedit, Shell 상에서는 vim, pico, emacs 등 다양한 편집기가 있습니다. 하지만, 정말 간단하게 그냥 text 파일의 내용을 보고 싶을 때는 cat을 사용하시면 됩니다. 

일반적으로 vim(이하 vi)를 사용하는데 vi를 이용해서 제가 작성해둔 man 페이지를 열어 보겟씁니다. 

vi test.txt

위와 같이 하시면 됩니다. 

제일 처음에 보여 드린 vi는 빈 내용이엇찌만, 지금은 cat의 man 페이지를 복사해 두었습니다. 

저기서 빠져 나오시려면 :q 를 하시면 됩니다. ^^

저는 보여 드리려고 한거여서 따라하신 분은 vi test.txt 후에 :q vi에서 밖으로 나오게 되어 있습니다. 

그럼 다시 cat으로 돌아 오겠습니다. 

저 텍스트파일을 cat으로 열어 보겠습니다. 

cat test.txt

위와 같이 여시면 됩니다. 

vi로 보신 내용이 그대로 나옵니다. 

이제는 리눅스에서 보시고자하는 파일을 간단하게 보실때 cat을 이용하시면 되겠습니다. 

그런데 여기 조금 다른 문제가 생깁니다. 

문서가 길면?

1. PuTTY나, 다른 SSH 클라이언트의 Scroll 기능을 이용하시면됩니다. ^^

2. 리눅스의 more 나 less 라는 명령어를 이용하시면 됩니다. 

1 번은 그냥 하시면 되니 넘어가서 more하고 less를 살펴 보겠습니다.

앞으로 또 설명할 내용이지만, test2.txt를 한번 만들어 보겠습니다.  조금 긴 문서로요 ^^

man cat > test2.txt

위와 같이 하시면 > 가 가르키는 test2.txt에 man 페이지의 내용을 출력해 줍니다. 

그럼 다시 저걸 보도록 하겠습니다. cat으로요.

cat test2.txt

화면을 일부러 제가 줄이기는 했지만, 위 그림과 같이 한페이지에 안나오고 지나갑니다. 

이번에는 more라늠 열령어를 이용해서 같이 사용해보겠습니다. 

리눅스에서는 | 문자를 가지고 조합을 합니다. 

cat test2.txt | more

위 명령어를 내려 보겠습니다. 

첫페이지네만 보여주고 More라는 프롬프트를 띄워 줍니다. 

저기서 스페이스 또는 엔터를 누르면 다음 페이지로 넘어 갑니다. 

	cat test2.txt | less

less 를 조합해서 명령어를 내리면, : 프롬프트가 나옵니다. 이때 화살표를 아래위로 움직여 보십시오. more가 페이지단위로 움직이고 한 방향으로 출력해주는 반면에 , less는 한줄씩 움직이고, 앞/뒤 양 방향으로 움직입니다. ^^

오늘은 cat의 간단한 파일 보여주기에 대해서 말씀 드렸습니다. 다음 글에서는 cat 파일 합치기 기능을 한번 저도 알아보겠습니다. ^^

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

어제 로그인 까지는 잘 따라 오셨습니까?

이제 VM 인스턴스를 생성해보겠습니다. 오라클 클라우드에서 주의 하실 점은, 돈을 지불하시겠다는 마음을 먹고 계다면 상관 없겠지만, 돈을 안내시려고 제글을 읽고 계실 것이므로 저기 보시면 항상 무료 적격 이라고 붙어 있는 것들만 생성하셔야 합니다. ^^

제 대시보드를 살짝 보여 드리면 위와 같이 전부 무료 인 것만 저는 사용하고 있습니다. ^^

그럼 VM 인스턴스를 생성해보겠습니다.

이전 화면에서 VM 인스턴스 생성을 클릭 하십시오.

이름은 자동으로 정해 줍니다. 저는 그냥 그대로 씁니다. ^^

계정명도 그대로 둡니다.

배치도 그대로 뒀습니다.

이미지 구성은 좀 바꾸겠습니다. 요즘 저는 ubuntu가 좋아지고 있습니다. 그래서 ubuntu로 변경하려고 합니다. ^^

편집을 클릭 하십시오.

위와 같이 나올 껍니다. 오른쪽에 이미지 변경 버튼을 클릭 합니다.

위와 같이 오른쪽에 뜰 껍니다. 저중에서 윈도우즈는 유료 입니다. ^^ Canonical Ubuntu를 선택하십시오.

Oracle Linux를 사용하셔도 됩니다. ^^

제가 기존에 사용하는 이미지는 18.04 버전이네요 캐노니컬을 선택하시면 버전을 선택할 수 있습니다.

저기 콤보박스에서 버전을 선택하시면 됩니다.

하지마는 저는 그냥 선택된 대로 22.04 버전을 사용하겠습니다.

선택화면 왼쪽 하단의 이미지 선택을 클릭해 주십시오.

이미지가 우분투로 변경 되었습니다. ^^

이부분은 중요 합니다. SSH 키 추가에서 전용키 저장, 공용 키 저장을 클릭해서 다운로드 하십시오.

인스턴스를 생성하고, SSH로 접속하실때 필요 합니다.

기억하기 쉬운 곳에 보관 하시고 오늘은 인스턴스 생성이 목적이어서 저장만 하고 넘어 갑니다.

부트 볼륨은 설정하지 않으면, 50GB로 되어 있습니다.

살짝 살펴 보고 넘어 가면

200GB를 사용할 수 있는데 제가 이미지 147GB를 사용했으니 50GB를 사용해도 무료 범위에서 벋어나지 않습니다.

여러분은 최초로 생성하신다면 200GB까지 디스크를 생성하실 수 있습니다. ^^

마지막으로 고급 옵션 표시는 그대로 두시고, 맨 하단의 생성 버튼을 클릭 하십시오.

위와 같이 나오면 정상적으로 인스턴스가 생성 된 것입니다.

하단에 보시면 완료 15가 보이는데 여러분은 다르게 보일 수 있습니다. 완료가 진행율입니다. 100%가 되면 가상서버가 생성된 것입니다.

공용IP주소, 사용자 이름, VNIC의 서버 네트워크느 정보 는 다음에 접속하실때 필요한 내용입니다. ^^

인스턴스 대시보드를 보면 저렇게 2대의 가상 머신이 있습니다. ^^

저는 이제 Oracle 클라우드의 무료 서버 2대를 다 만들었네요 ^^

다음 문서에서 서버에 어떻게 접속하는지를 알아 보겠습니다.

오늘은 이만 줄이겠습니다.

감사합니다.

관련글

리눅스/Linux Oracle Cloud Free Tier 오라클 클라우드 무료 계층 가입하기 :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux Oracle Cloud Free Tier 오라클 클라우드 무료 계층 가입하기

안녕하세요 가야태자 @talkit 입니다. 오늘 설명드리려고 하는 내용은 제가 요즘 리눅스 관련 내용을 계속 적고 있습니다. 이 부분에서 공부를 해보시려면 리눅스/Linux VMWARE Workstation에 우분투/Ubunt

talkit.tistory.com

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(1) 로그인 Let's make free VPS on Oracle Cloud.(1) Login :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(1) 로그인 Let's make free VPS on Oracle C

안녕하세요 가야태자 @talkit 입니다. 요즘 계속 리눅스에 관련된 글을 적고 있습니다. 해당글을 실행하실 수 있도록 VPS에 가입하는 과정을 제글은 아니지만 소개 해드렸습니다. 오라클은 작은 서

talkit.tistory.com

 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

요즘 계속 리눅스에 관련된 글을 적고 있습니다. 

해당글을 실행하실 수 있도록 VPS에 가입하는 과정을 제글은 아니지만 소개 해드렸습니다. 

오라클은 작은 서버 2대가 평생 무료 입니다. 

단, 몇달에 한번씩 로그인은 해주셔야 합니다. ^^

오라클 클라우드 사이트에 접속 하십시오. https://www.oracle.com/kr/cloud/

 

차세대 클라우드 플랫폼을 만나다

Oracle Cloud Infrastructure로 조직의 클라우드 성능 및 거버넌스 관리 능력을 개선해 보세요.

www.oracle.com

사이트에 접속하시고 로그인 하십시오.

Oracle 클라우드에 로그인을 클릭하십시오.

 위와 같이 나올껍니다. 계정을 선택하시고 다음을 누르십시오.

리눅스/Linux Oracle Cloud Free Tier 오라클 클라우드 무료 계층 가입하기 :: 가야태자의 IT이야기 (tistory.com)

계정이 없으면 위 링크를 참조해서 가입 하십시오.

위와 같이 나오면 Continue 또는 다음을 누르십시오.

실제로 아이디/비밀번호를 넣으시고, Sgin In 을 클릭하시면 로그인 됩니다. 

로그인 성공하시면 위와 같은 화면이 나올껍니다. 

서버 만드는 작업까지 적으면 오래 걸릴 것 같아서 일단 로그인 까지 적고 내일은 다음 과정을 적겠습니다 

저희가 하려고 하는 다음 작업은 우선, VM 인스턴스 생성 입니다. 

감사합니다. 

관련글

리눅스/Linux Oracle Cloud Free Tier 오라클 클라우드 무료 계층 가입하기 :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux Oracle Cloud Free Tier 오라클 클라우드 무료 계층 가입하기

안녕하세요 가야태자 @talkit 입니다. 오늘 설명드리려고 하는 내용은 제가 요즘 리눅스 관련 내용을 계속 적고 있습니다. 이 부분에서 공부를 해보시려면 리눅스/Linux VMWARE Workstation에 우분투/Ubunt

talkit.tistory.com

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(2) VM 인스턴스 만들기 Let's make free VPS on Oracle Cloud.(2) Create VM Instance :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(2) VM 인스턴스 만들기 Let's make free

안녕하세요 가야태자 @talkit 입니다. 어제 로그인 까지는 잘 따라 오셨습니까? 이제 VM 인스턴스를 생성해보겠습니다. 오라클 클라우드에서 주의 하실 점은, 돈을 지불하시겠다는 마음을 먹고 계

talkit.tistory.com

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

오늘 설명드리려고 하는 내용은 제가 요즘 리눅스 관련 내용을 계속 적고 있습니다.

이 부분에서 공부를 해보시려면

리눅스/Linux VMWARE Workstation에 우분투/Ubuntu 16.04 설치하기 https://talkit.tistory.com/593

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637

위 글들과 같이 VMWARE에 리눅스를 설치하시는 방법도 하나의 방법입니다.

리눅스/Linux 스타벅스 커피 한잔 값으로 VPS 서버 구독하기 https://talkit.tistory.com/589

그리고 위 글처럼 VPS 즉 가상 서버를 하나 구독 하시는 것도 방법입니다.

그런데 Oracle은 VPS를 무료로 주네요.

가입을 안하실 이유가 없겠지요 ^^

오라클 클라우드 상시 무료 서버 가입 방법 https://seogilang.tistory.com/2150

제가 가입은 해버려 가지고 캡처하고 여러가지 작업들을 할 수 없어서 제글 말고 다른글을 소개 합니다.

10월 22일에 작성된 글이어서 최신 글 입니다.

제가 가입 할때는 300USD 짜리 30일 체험은 없었는데 생겼네요 ^^

하지만 저기는 처다보지 않습니다.

한달만 쓰고, 지워주고 하는 귀찮음이 있으니까요 ^^

그래서 상시 무료 클라우드 서비스만 사용합니다.

ARM 기반은 아무리 찾아도 유료 서비스인 것 같습니다.

저희가 쓸 수 있는 것은 일단 AMD 컴퓨팅 VM 2개가 무료 입니다

그리고, VCN 가상 클라우드 네트워크도 2개가 무료 입니다.

이걸 필요로 합니다.

그리고, 필요하면 Oracle 데이터 베이스도 사용해볼 수 있습니다.

또한가지는 S3에 해당하는 Object 스토리지도 사용해볼 수 있겠네요 ^^

다음 글에서는 본격적으로 무료 티어 인스턴스를 개설해 보겠습니다.

감사합니다.

관련글

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(1) 로그인 Let's make free VPS on Oracle Cloud.(1) Login :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(1) 로그인 Let's make free VPS on Oracle C

안녕하세요 가야태자 @talkit 입니다. 요즘 계속 리눅스에 관련된 글을 적고 있습니다. 해당글을 실행하실 수 있도록 VPS에 가입하는 과정을 제글은 아니지만 소개 해드렸습니다. 오라클은 작은 서

talkit.tistory.com

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(2) VM 인스턴스 만들기 Let's make free VPS on Oracle Cloud.(2) Create VM Instance :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux 오라클 클라우드에 무료 가상 서버를 만들어 보자.(2) VM 인스턴스 만들기 Let's make free

안녕하세요 가야태자 @talkit 입니다. 어제 로그인 까지는 잘 따라 오셨습니까? 이제 VM 인스턴스를 생성해보겠습니다. 오라클 클라우드에서 주의 하실 점은, 돈을 지불하시겠다는 마음을 먹고 계

talkit.tistory.com

 

반응형
반응형

image.png

안녕하세요 가야태자 @talkit 입니다.

오늘도 어제에 이어서 제 본업쪽 관련 된 글 입니다.

이글은 https://talkit.tistory.com/category/%EB%A6%AC%EB%88%85%EC%8A%A4%28LINUX%29 에서도 같이 연재 되고 있습니다.

파일 이동 시키기 mv 명령어 - https://talkit.tistory.com/667

위 글과 같이 오늘도 파일에 관련된 글입니다.

어제 글에서 살짝 힌트를 보여 드렸습니다. ^^

하지만 오늘 본격적으로 적어 보도록 하겠습니다.

우선 복사하다를 영어로 하면 copy 가 됩니다.

리눅스에서 cp는 copy의 약자 입니다. ^^


cp [옵션들] 원본파일 대상파일

음 CP의 옵션은 -r 하고 -f -v 정도 아시면 됩니다. ^^

먼저 -r 은 하위 디렉토리까지 복사를 한다는 이야기 입니다. 그래서 디렉토리를 복사할때는 무건 -r을 넣어 주셔야 합니다.

그리고, -f 는 어제 mv와 동일하게 강제로 파일을 덮어 씁니다. -f를 안주면 덮어 쓸껀지 물어 봅니다. ^^

-v 같은 경우는 복사하는 내용을 보여 줍니다.

cp와 mv의 가장 큰 차이점은 cp는 복사라서 원본이 그대로 남구요. mv는 원본이 사라진다는 겁니다. ^^


[talkit@localhost test]$ ls -al
합계 4
drwxrwxr-x 2 talkit talkit  22 12월 17 02:16 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
[talkit@localhost test]$

mv 와 마찬가지로 저기 보이는 test.txt 파일을 복사해 보겠습니다.


cp test.txt test_target.txt

명령어를 수행 하면


[talkit@localhost test]$ cp test.txt test_target.txt
[talkit@localhost test]$ ls
test.txt  test_target.txt
[talkit@localhost test]$

결과는 위와 같습니다.

test.txt와 test_target.txt 가 그대로 있습니다.


[talkit@localhost test]$ mkdir source
[talkit@localhost test]$ ls -al
합계 8
drwxrwxr-x 3 talkit talkit  59 12월 17 02:19 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@localhost test]$

source 라는 디렉토리가 생겼습니다

저 아이를 target 디렉토리로 변경해 보겠습니다.

틀린 명령어는 아래와 같습니다.


cp source target

정확한 명령어는 아래와 같습니다.


 cp -r source target

두가지 명령어를 모두 수행 해보겠습니다.


[talkit@server02 test]$ cp source target
cp: omitting directory `source'
[talkit@server02 test]$ cp -r source target
[talkit@server02 test]$ ls -al
합계 8
drwxrwxr-x 4 talkit talkit  73 12월 17 02:22 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit   6 12월 17 02:22 target
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@server02 test]$

복사할 내용 중에 디렉토리가 포함되어 있으면 오류가 납니다.

반드시 -r 옵션을 넣어 주셔야 합니다.

첫번째에서는 오류가 나고 두번째에서는 잘 복사가 되었습니다.

이번에는 target 디렉토리 안에 test.txt와 test_target.txt 를 한꺼번에 복사해보겠습니다.

*를 이용하시면 됩니다.


cp *.txt target/

여러분은 / 없이 target까지만 치시면 됩니다. 저는 저게 디렉토리라는 것을 나타내려고 /를 붙인 것 뿐입니다.

한번 해보겠습니다.


[talkit@server02 test]$ cp *.txt target
[talkit@server02 test]$ ls -alR
.:
합계 8
drwxrwxr-x 4 talkit talkit  73 12월 17 02:22 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt

./source:
합계 0
drwxrwxr-x 2 talkit talkit  6 12월 17 02:19 .
drwxrwxr-x 4 talkit talkit 73 12월 17 02:22 ..

./target:
합계 8
drwxrwxr-x 2 talkit talkit 45 12월 17 02:25 .
drwxrwxr-x 4 talkit talkit 73 12월 17 02:22 ..
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test.txt
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test_target.txt
[talkit@server02 test]$

복사는 오류 없이 잘 넘어 갔구요.

일부러 오랫만에 ls -alR 명령어를 이용해서 하위 디렉토리에 있는 파일을 리스팅 해보았습니다.

그랬더니 ^^ 잘 갔네요

이번에는 -v 옵션을 더 넣으서 target 폴더를 target2 폴더로 복사해보겠습니다.


[talkit@server02 test]$ cp -rv target target2
`target' -> `target2'
`target/test.txt' -> `target2/test.txt'
`target/test_target.txt' -> `target2/test_target.txt'
[talkit@server02 test]$ ls -alR
.:
합계 8
drwxrwxr-x 5 talkit talkit  88 12월 17 02:26 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit  45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt

./source:
합계 0
drwxrwxr-x 2 talkit talkit  6 12월 17 02:19 .
drwxrwxr-x 5 talkit talkit 88 12월 17 02:26 ..

./target:
합계 8
drwxrwxr-x 2 talkit talkit 45 12월 17 02:25 .
drwxrwxr-x 5 talkit talkit 88 12월 17 02:26 ..
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test.txt
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test_target.txt

./target2:
합계 8
drwxrwxr-x 2 talkit talkit 45 12월 17 02:26 .
drwxrwxr-x 5 talkit talkit 88 12월 17 02:26 ..
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:26 test.txt
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:26 test_target.txt
[talkit@server02 test]$

복사하는 모습이 보이지요.

오늘은 일단 여기 까지 적고 수정할일이 있으면 수정 해놓겠습니다.

감사합니다.

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

오늘은 본업이죠 ^^ Python 공부하기 위해서 Linux에 아나콘다를 설치 했습니다.

Anaconda란?

Anaconda는 실제로 conda, Python 및 150 개가 넘는 과학 패키지와 그 종속성과 함께 제공되는 소프트웨어 배포입니다. 응용 프로그램 conda는 패키지 및 환경 관리자입니다. Anaconda는 Python에서 가장 일반적인 데이터 과학 패키지가 포함되어 있으므로 상당히 큰 다운로드 (~ 500MB)입니다. 모든 패키지가 필요하지 않거나 대역폭이나 저장 공간을 절약해야하는 경우 Miniconda도 있습니다. Miniconda는 conda와 Python 만 포함하는 작은 배포판입니다. 당신은 여전히 ​​conda와 함께 사용 가능한 패키지를 설치할 수 있습니다.

Conda는 명령 줄에서 독점적으로 사용할 프로그램이므로 사용하기가 편한 경우 Windows 용 명령 프롬프트 자습서 또는 OSX / Linux 용 Linux 명령 행 기본 과정을 확인하십시오.

아마도 이미 파이썬이 설치되어 있고 이것이 왜 필요한지 궁금 할 것입니다. 첫째, 아나콘다는 수많은 데이터 과학 패키지를 제공하기 때문에 데이터 작업을 시작할 수 있습니다. 두 번째로, 콘도를 사용하여 패키지와 환경을 관리하면 사용할 다양한 라이브러리를 다루는 미래의 문제를 줄일 수 있습니다.

출처 : https://eungbean.github.io/2018/10/08/anaconda/

Python은 리눅스에 깔려 있습니다만 다른 여러가지를 조금 편하게 해보기 위해서 Anaconda를 설치 했습니다.

https://www.anaconda.com/products/individual

아나 콘다가 유료화 된건가요 T.T

여튼 개인용 버전을 설치 하면 됩니다.

일단 설치 하도록 하겠습니다.

그러면 다시 어떤 OS에 설치 할 것인지를 선택 하게 되어 있습니다. ^^

저는 리눅스 용이기 때문에 맨 마지막 Linux Instller를 다은로드 합니다.

리눅스에 접속 하셔서

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

저 명령어를 치면 다운로드 됩니다.

저렇게 다운로드 되면

ls 명령어를 치시면 다운로드 되어 있으는 걸 확인 할 수 있으실 겁니다.

저는 잘 다운로드 되었습니다.

그럼 설치 해보겠습니다.

chmod 755 Anaconda3-2020.11-Linux-x86_64.sh

그러면 저 파일이 실행 가능한 파일이 되었습니다.

이제

./Anaconda3-2020.11-Linux-x86_64.sh

로 실행하실 수 있습니다.

리눅스 개인 계정에 설치하실 수 있으니깐 설치하시면 됩니다.

첫번째 질문에 엔터 치십시오.

중간에 스페이스 여러번 누르시면 나오는 두번째 질문에는 yes라고 치시면 됩니다.

물론 치시고 엔터 ^^

세번째 질문은 어디에 설치할 것인가 입니다.

저는 그냥 계정 내에 설치 하겠습니다.

그래서 엔터 입니다.

변경하시고 싶으시면, 권한이 있는 곳이어야하고,

원하는 위치로 변경하실 수 있습니다.

그러면 설치를 진행 합니다.

중간에 많은 매시지들이 죽 흘러 갑니다. ^^

설치는 끝난 상태이구요.

여기는 yes를 선택 하십시오.

직접 작업 하려면 귀찮은 것을 좀 줄여 줍니다.

저는 설치를 원래 해놔서 아마도 설정에 관란 정보가 있어 가지고 저런 상태 인 것 같습니다.

그런데 순수한 설치 버전에서는 몇가지 더 물어 었던 것 같습니다.

그냥 엔터 치시면 됩니다.

그리고, Hello Python Wolrd를 한번 찍어 보도록 하겠습니다.

echo "print('Hello Python world')" >> test1.py

위명령어를 그대로 붙여 넣으시면 됩니다.

아참 그전에 cat ~/.bash_profile

해보시면

# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/talkit/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/talkit/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/talkit/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/talkit/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

맨 마지막에 보면 저 비슷한 내용이 있으면 성공 한 것입니다. ^^

그리고 위에서 작성한 코드를 실행하기 전에

source ~/.bashrc

위명령어를 통해서 저 작업을 완료 합니다. ^^

python test1.py

잘 되시나요?

저는 잘 됩니다.

리눅스가 있으면 사용하시면 되구요.

없으시면 PC에다가

VMWARE 설치하시고 아래 글을 따라하시면 리눅스가 설치 됩니다. ^^

https://talkit.tistory.com/637?category=147034

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

윈도우즈에 파이썬을 설치를 했지만, 제가 원하는대로 되지를 않아서 리눅스에 설치하고 있습니다.

그래서 16.04가 있긴 하지만, 18.04에 적응도 해볼겸 또 설치를 해보도록 하겠습니다.

우선, http://mirror.kakao.com/ubuntu-releases/bionic/ 다음 카카오 미러에서 iso 파일을 다운로드 합니다.

솔직히 서버만 설치해서 puttty로 접속하면 되겠지만, 지난 번과 마찬가지로 데스크톱을 설치하려고 합니다.

그래서 저는 데스크톱을 설치 했습니다.

여러분은 원하는 아이를 선택 하시면 됩니다.

다운로드 폴더에 다운로드 되어졌습니다.

그럼 다시 VMWAR로 돌아와서

Create a New Virtual Machine를 클릭 합니다.

지난 번에는 VMWAR에서 자동으로 리눅스를 깔아 주는 방식으로 설치를 했지만, 이번에는 진짜로 리눅스를 PC에 설치하는 것 처럼 하겠습니다.

그래서 I will install the operating system later. 을 선택 합니다.

저처럼 Mac을 VMWARE에 설치하신 분이 아니면 MacOS는 없을 겁니다.

Linux 그리고 Ubuntu 64-bit 를 선택 합니다.

그리고, Next를 클릭 하십시오.

어디에 가상 머신을 설치 하실지 결정 하시면 됩니다.

저는 대용량 데이터도 조금 다뤄 볼 생각이어서 200GB 정도 잡아 줬습니다. Next 클릭 하십시오.

이화면이 나오면 저기 Customize Hardware ... 을 클릭 하십시오.

컴퓨터가 좀 안좋으면 저기서 권장하는 용량도 괜찮습니다.

제컴은 사양이 10 Core CPU에 64GB 메모리에 1TB SSD 여서

보시는 바와 같이 32GB 메모리에 12 VPU를 할당 했습니다.

그리고, 네트워크를 저는 Bridged를 선호 합니다.

이렇게 하시고 Finish를 클릭 해 주시면 됩니다.

저기 보이시나요 ^^

방금 생성한 애가 또 만들어졌습니다.

Play Virtual Machine를 하시기 전에

가상 머신 이름에서 오른쪽 마우스 누르시고 Settings를 클릭 하십시오

저기에 iso를 마운트 합니다.

Use IOS Image file을 선택하시고 아까 다운로드 받아 둔 iso파일을 선택 합니다.

그리고 OK 누르셔서 Play Virtual Machine을 다시 실행 합니다.

일단 요렇게 까만 화면 이었다가

요렇게 나올 겁니다. 저기서 왼쪽에 있는 언어를 한글로 바꾸시면 안내가 한국어로 바뀝니다.

우분투 경험 말고 우분투 설치를 선택 합니다.

저도 오랫만이라 ^^

맨날 자동으로 깔았던 것 같습니다. T.T

저기서 한국어 키보드를 선택 하십시오.

필요하면 바로 바로 설치하를 진행하도록 하고 여기서는 최소 설치를 선택 합니다.

제가 최소 설치로 진행해서 몇가지를 진행하고 있는데 그냥 일반 설치로 진행 하시는 것이 좋을 것 같습니다. 설치해야할께 너무 많네요. ^^

그리고, 계속 하기 클릭 하십시오.

디스크는 뭐 서버 설정이라면 제가 좀 더 알려 드리겠습니다만,

그냥 여기서 권장하는 대로 계속 누르시면 됩니다.

디스크는 포맷 됩니다.

또 계속 하기 누르시면 됩니다.

시간대는 그냥 Seoul로 하시면 됩니다.

아래와 같이 채우십시오

이제 설치를 시작 합니다.

리눅스 설치 너무 쉽지 않습니까 ^^

이제 설치는 끝났습니다.

지금 다시 시작 누르면 CDROM 을 제거하고 재시작 하라고 뜹니다.

그러면 일단 머신이름 에서 오른쪽 마우스 누르고, Settings에서 CD-ROM 란에서

Connect at power on 체크를 없애고

Paly Virtual Machine를 누르시면 됩니다.

그러면 이렇게 Ubuntu 화면이 뜹니다.

여기서 아까 만드신 비밀번호 누르고 로그인 하시면 됩니다.

저 작은 윈도우를 크게 만드시려면, Vmware tools 라는 것을 설치 하셔야 합니다.

그래서 제가 한 것 처럼 Mange 에서 Install VMware Tools ... 을 클릭 하십시오.

일단 제화면에는 업그레이드 할 거냐고 묻고 있습니다. 20을 설치 했지 업그레이드 안할 겁니다.

업그레이드 하지 않음을 선택 하시면 됩니다.

앞에 것은 메이저 업그레이드 이고 이것은 마이너 업그레이드 입니다.

얘는 해주시는 것이 좋습니다.

비밀번호 물으면 아까 입력한 비밀번호 다시 누르시면 됩니다.

업데이트 하고 다시 리붓 하십시오.

탐색기 아이콘을 누르셔서 탐색기 아이콘은 저기 문서 서럽 같이 생긴 아이 입니다. ^^

Vmware Tools CD를 찾는데 없으면 아까 처럼 Manage에서 Install Vmware tools를 클릭 하시면 됩니다.

저 tar.gz 파일을 압축을 푸십시오.

윈도우즈 처럼 더블 클릭 하시면 됩니다.

저기서 풀기를 누르시면 됩니다.

그리고 홈을 클릭 하신 다음에 또 초록색 풀기 버튼을 클릭 하십시오.

다시 탐색기에서 홈을 눌러 보시면,

압축 풀린 폴더가 있습니다.

bin 폴더 까지 들어 가십시오.

오른쪽 마우스 누르고 터미널에서 열기를 클릭 하십시오.

bin 이 아니고, 그냥 해당 폴더 였는데

요렇게 보이시면, ^^

cd .. 해서 한단계 위로 올라 갑니다.

그리고, ls 해보십시오

그리고 sudo ./vmware-install.sh 를 실행 하시면 됩니다.

대충 요런 그림입니다. ^^

비밀번호 물으면 아까 입력하시면 비밀번호 넣어 주시면 됩니다.

여기서 여러가지 질문을 합니다.

여기서 처럼에만 yes로 변경해주시고, 나머지는 전부 그냥 엔터 치시면 됩니다.

그리고 VM을 한번 껏다 켜 주십시오.

재기동 후에

우측 상단의 파워 옆에 세모 아래로를 클릭 하시고,

저기 툴모양의 아이콘을 클릭 하십시오.

저게 윈도우의 제어판 입니다.

디스플레이를 클릭하고 원하는 해상도로 조정 하시면 됩니다.

오늘은 여기까지 입니다. ^^

감사합니다.

반응형
반응형

 

요즘 계속 Ubuntu를 이용해서 리눅스에 대해서 설명해 드리고 있습니다. 

저 Ubuntu에 X Windows 콘솔이 아니고, SSH 로 붙어 보기 위해서 작업을 계속 진행하고 있습니다. 

그것을 설명 드리겠습니다. 

우선 위 그림 처럼 VMWARE를 실행해 주십시오.

네트워크를 변경하고자 하는 Guest OS 이름을 선택하시고, 오른쪽 마우스를 눌러서 Settings를 클릭 합니다. 

그 다음으로 Network Adapter 를 선택 합니다. 

저는 현재 Bridged 넷트워크로 되어 있지만 기본적으로 NAT였습니다. 

보시는 바와 같이

Bridged : 일종의 PC와 동일한 라우터로부터(공유기로 부터) 새로운  IP를 받아오는 방식 입니다. 

정확한 내용은 저도 어렵긴 한데 ^^ 네트워크 브리지 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

를 참조 하십시오. 저는 한글이 좀 이해가 안됩니다. ^^

NAT : Host OS 네트워크를 기존으로(Gateway로) 하부에 하나의 네트워크를 구성하는 방식 입니다. 

역시 한글 위키에서 공부 하면 좋습니다. 네트워크 주소 변환 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

Host Only : 그야 말로 Host 컴퓨터하고만 통신을 합니다. 

요렇게 세가지가 있고 밑에 두가지는 저도 잘 모릅니다. 

앞으로 집 밖 또는 사무실 밖에서 저 리눅스에 접속하고 싶다는 욕심도 있습니다. 그래서 포트 포워딩을 할 것인데 NAT로 구성되어 있으면 또한번 포트 포워딩을 해줘야 합니다.

그래서 저는 브릿지로 네트워크를 구성하는 것을 권장합니다. 

제목을 거창하게 적었지만 간단합니다. 위치만 알면 너무 쉬운 수준 입니다. 

라디오 버튼에 원하는 네트워크로 변경해 주시고, 

OK 버튼을 클릭 하시면 됩니다. 

그리고 GuestOS로 부팅 하시면, 원하는 방식의 아이피를 얻으실 수 있습니다. 

해당 아이피를 확인 하는 방식은 리눅스/Linux 리눅스의 네트워크 정보 확인 ifconfig/Windows ipconfig

지난 번의 제글을 확인 하시면 됩니다. 

이주소는 브릿지 일때의 주소 입니다. 

NAT로 변경하고 리눅스를 부팅해 보겠습니다. 

NAT로 변경후에 아이피를 확인 하시면, 위와 같이 나옵니다.

저 리눅스에 접속하시는 법은 다음 글에서 설명 드리겠습니다.

감사합니다. 

 

반응형
반응형

다음에 이야기 하려고 하는 VMWARE에 설치 되어 있는 리눅스에 접속해 보려고 합니다. 

그런데, 제가 설치한 리눅스는 접근이 불 가능한 네트워크 구조로 되어 있습니다. 

그래서 리눅스의 아이피 정보를 확인 하는 법을 알려 드리겠습니다. 

저 처럼 우분투를 깔고 접속 하실 수 있다면, 

X Windows 상태에서 설정 Network 라는 아이콘을 클릭 하시면 위의 그림 처럼 아이피를 확인 할 수 있습니다. 

그리고 Windows에서는 

탐색기에서 네트워크에서 오른쪽 마우스 누르시고, 속성을 클릭 하시면 

이 그림 처럼 보일 겁니다.

저기서 어댑터 설정을 이더넷 을 클릭 하십시오.

그리고 다시 자세히를 누르시면 오른쪽 그림 같이 아이피가 보일 껍니다. 

여기서 주의 할 것은 서로 네트워크를 접속하기 위해서 

192.168.25.5 와 192.168.25.6 이 비슷한 구조로 되어 있어야 합니다. 

VMWARE 관련 내용은 다시 다음글에서 알려 드리겠습니다. 

오늘은 저걸 Shell에서 보실 수 있는 명령어 입니다. 

리눅스에서는 터미널을 여시고 ifconfig 명령어를 내리시면 됩니다. 

저렇게 나올껍니다. 저기에 동일하게 192로 시작 하는 부분이 본인 아이피 입니다. 

Windows에서는 

명령프롬프트를 시작 메뉴에서 찾으셔서 실행하시거나

Win + R 누르시고, cmd 를 시행하십시오.

저런 모양이지요.

리눅스가 ifconfig 였다면 윈도우즈는 ipconfig 명령어 입니다. 

위와 같이 나옵니다. 

저기 보이시나요? 192.168.25.5 가 아이피 입니다. 

윈도우즈 창에서 확인 하셔도 되지만, 쉘상에서 명령어를 빨리 실행해서 아시는 것도 도움이 됩니다. 

감사합니다. 

관련글

리눅스/Linux VMWARE 네트워크/Network 연결/Connection 방식/Method 변경하기/Change

반응형

+ Recent posts