만약, 사용하려는 port가 이미 사용 중이라면 다른 port를 사용하도록 변경하던가, 어떤 Porcess에서 사용 중인지 확인해서 사용 해제를 해야 한다.
사용 가능한 port 라면, windows에서 서비스에 사용할 ip와 port를 wsl ip와 port에 연결해준다.
netsh interface portproxy add v4tov4 listenport={$listen port} listenaddress={$windows ip adress} connectport={$connect port} connectaddress={$wsl ip address}
연결이 되었다면, 다음과 같이 확인 할 수 있다.
netsh interface portproxy show v4tov4
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
0.0.0.0 80 172.30.106.233 80
CRON(Command Run On)이란, Unix System에서 제공하는 Job scheduler를 말한다. CRON은 Shell 명령어들이 주어진 일정에 주기적으로 실행하기 위해서 crontab(CRON Table)이란 것을 참조하고, crontab에는 실행시킬 Job 목록과 일정이 기록되어 있다.
CRON Table
사실, Windows에서도 Task scheduler라는 기능을 사용하면 Scheduling을 얼마든지 할 수 있긴 하다. 하지만 간혹 이미 Linux shell script로 제공되는 경우 등 Linux 환경에서의 작업이 더 유리한 상황인 경우에는 해당 script를 Windows 용으로 변경해야 하는 번거로움이 있다.
이럴때 WSL을 이용하면 좋다. WSL은 Ubuntu환경을 거의 대부분 제공하기 때문에 별도의 Linux 환경을 구성하지 않아도 주어진 Shell Script를 그대로 이용하면 Scheduling이 가능하다.
예를 들어, Linux System에 대한 Health check를 주기적으로 매시간마다 기록해야하는 상황이라고 가정해보자. Linux System이기 때문에 Bash shell script로 작업하는 것이 유리 할 것이다.
먼저, CRON Scehduler가 Backgroud에서 동작하기 위해서 daemon service를 설치 및 실행해야한다.
WSL에는 기본적으로 GUI 환경을 제공하지 않는다. 대부분의 경우 터미널로 출력되는 결과물만으로도 작업하는데 별다른 문제가 없지만 간혹 GUI가 꼭 필할 때도 있다.
리눅스의 GUI환경(X-window)은 처음부터 원격실행을 고려하여 Server-Client 구조로 분리하여 설계되었다. 이러한 이유로 GUI를 제공하지 않는 WSL에서도 X-window Server-Client통신에 사용되는 X11이라는 프로토콜을 이용하면 원격으로 GUI환경을 사용할 수 있다.
X-Window 기본개념
원격지가 X-Client가 되고 원격지의 화면을 받는 곳이 X-Server가 된다. 원격지의 실행되는 GUI 프로그램이 X-Client를 통해서 X-Server에게 화면정보를 요청보내면 X-Server는 요청온 정보를 받아 화면을 그려준다.
WSL GUI 환경을 구성하기 위해서는 첫번째로 Windows 10에 X-Window Server로 동작할 Xming 서버를 설치해야 한다.
설치를 완료하고 Xming을 실행하면 시스템 트레이에서 다음과 같이 아이콘을 확인 할 수 있다.
Windows 10 System Tray
다음으로 WSL에 X-Client를 구성해야 한다. 먼저, Machine ID를 생성한다.
WSL(Windows Subsystem for Linux)을 사용하다 보면 user password를 잃어 버리는 경우가 있다. WSL이 아닌 경우 여러가지 복원 절차를 통해야 하지만 WSL인 경우 MS(Microsoft)에서 개발한 리눅스 호환 커털 인터페이스를 제공하기 때문에 간단히 user password를 초기화 할 수 있다.
먼저, 설치된 WSL 버전을 확인 해야 한다. 명령 실행 창에서 ‘CMD’를 실행하고 아래 명령어를 입력하면, 설치된 WSL 버전 정보를 확인 할 수 있다. (여기서는 Ubuntu 1804 Linux를 기준으로 한다.)
c:\> wslconfig /list /all
Windows Subsystem for Linux Distributions:
Ubuntu-18.04 (Default)
설치된 WSL은 Ubuntu-18.04이고, 실행 명령어는 ‘Ubuntu1804’가 된다. (만약, Ubuntu(Default)로 나왔다면 실행 명령어는 ‘Ubuntu’가 된다.)
위에서 확인한 실행 명령어를 가지고 CMD창에서 다음과 같이 Ubuntu 기본 사용자를 root(관리자)로 변경해 준다.
c:\> Ubuntu1804 config --default-user root
이제, WSL Ubuntu를 실행하면 기본사용자가 root로 되어 있기 때문에 root로 로그인 된다. 바로, 대상 user의 password를 변경해 주고 로그아웃 한다.
$ passwd user
Enter new UNIX password: (type password)
Retype new UNIX password: (type password)
$ exit
다시 CMD창으로 돌아와 Ubuntu 기본 사용자를 기존 user로 변경해 준다.
c:\> Ubuntu1804 config --default-user user
이제, 다시 WSL Ubuntu를 실행하여 확인해 보면 password가 변경된 것을 확인 할 수 있다.