리눅스에서 벤치마크를 할때 여러 프로그램으로 가능합니다. Phoronix Test Suite도 그중의 하나인데요. 이 프로그램을 쓰면 제공되는 여러 테스트들을 활용해서 Processor, System, Network, Disk, OS 등의 카테고리의 벤치마크를 할 수 있습니다.
These are the defaultconfiguration options forwhen running the Phoronix Test Suite inabatch mode(i.e.running phoronix-test-suite batch-benchmark universe).Running inabatch mode isdesigned tobe asautonomous aspossible,except forwhere you'dlike any end-user interaction.
Save test results when inbatch mode(Y/n):Y
Open the web browser automatically when inbatch mode(y/N):N
Auto upload the results toOpenBenchmarking.org(Y/n):n
(1) 개념의 발생적인 측면. 이 개념이 왜 고안되었는지. (2) 개념의 실용적인 측면. 이 개념을 접했을 때 즉각적으로 떠올려봐야 되는 것이 무엇인지.
이 두가지를 기본적인 것부터 고급적인 것까지 항상 주시하면서 보강해가면 좋습니다. 기본적으로 (1)과 (2)를 핵심적으로 알아두고 지식 확장을 이루어나가면 숙지가 될 것입니다.
디렉토리의 경우 어떠할까요? 발생적인 것과 실용적인 것의 측면에서 생각해봅시다.
디렉토리는 발생적으로 파일의 저장을 체계적으로 하기 위해 고안된 개념입니다. 사무실에서 쓰이는 캐비넷 안에 들어있는 디렉토리를 생각하시면 됩니다. 사무실에는 캐비넷이 여러개가 있을 수 있고 각각의 캐비넷은 용도별로 구분이 됩니다. 그리고 각각의 캐비넷에 들어있는 디렉토리도 용도별로 구분되죠. 사용자는 파일을 체계적으로 저장하기 위해 임의로 캐비넷과 디렉토리를 분류해두고 그 기준에 맞춰 파일을 보관합니다.
아래 그림처럼 서로 독립된 캐비넷이 여러개로 분리되서 구조를 이루고 거기에 파일이 보관됩니다.
컴퓨터에서도 마찬가지인 디렉토리 개념이 존재합니다. 파일의 체계적 분류를 위해 디렉토리를 만들고 파일 저장 위치를 디렉토리로 구분해서 계층화해둡니다. 예컨데 사진 파일을 유저 홈디렉토리의 사진 디렉토리에 저장하기로 약속해놓았다든가, 서드파티 프로그램들을 C 드라이브 아래의 Program Files 디렉토리에 저장하도록 했다든가 하는 것이 그러한 예입니다.
여기서 캐비넷에 해당되는 것은 C 드라이브고, 디렉토리에 해당되는 것은 Program Files겠죠.
실용적으로 중요한 것은 어떤 경로로 구성된 디렉토리인지 실용적으로 떠올려보는 것입니다.
예컨데 첫번째 캐비넷 안에 “가” 디렉토리 아래 “김철수”라는 디렉토리가 있고 그 안에 “출생증명서” 파일이 있다면 경로가 생성됩니다. 그 경로는 유일하고 각각의 단계에 의해 구성됩니다. 이는 마치 사다리타기할 때처럼 시작지점부터 도착지점까지 경로가 유일하게 정해져 있는 것과 같습니다.
누군가 “니 홈디렉토리 아래 사진 디렉토리에 노리사마 사진을 저장해두었으니 볼려면 찾아봐”라고 말했다면, 즉각적으로 해야 될 것은 말로 된 디렉토리의 경로가 어떤 것인지 떠올려보는 것이죠.
보통 윈도우 운영체제에서는 위에 말한 디렉토리가 C:\Users\계정명\Pictures 가 됩니다. C:\ 라는 것은 부팅된 윈도우가 설치된 하드디스크를 의미하고, 이는 루트디렉토리라고 불립니다. 그 아래 Users나 계정명, Pictures는 하위 디렉토리라고 부릅니다. 루트디렉토리는 여러개가 있을 수 있고, 같은 층위의 하위 디렉토리는 같은 계층에 하나만 존재합니다.
이를 일반화하면
드라이브명:\하위 디렉토리1\하위 디렉토리2…\하위 디렉토리n
이렇게 구성됩니다. 드라이브명은 루트디렉토리라고 부르고, 하위 디렉토리1은 하위 디렉토리 2의 상위 디렉토리라고 부릅니다. 대개 이 구조는 유일합니다.
세밀하게 들어가보자면 이렇습니다.
드라이브명:\하위 디렉토리1\하위 디렉토리2…\하위 디렉토리n
이 구조가 중요한데 이런 구조를 디렉토리를 접하면 즉각적으로 떠올려보면 좋습니다.
확장 개념으로 조금 더 나아가봅시다. 앞서 말한 바에 의하면 디렉토리 경로는 유일하다고 했습니다. 이 유일한 경로를 안다면 해당 경로에 저장된 파일을 처리할 준비가 됩니다. 그런데 필요에 의해 확장된 예외에 의하면 최종 작업디렉토리는 유일해도 경로의 단계는 복수일 수도 있습니다. 유닉스에서 심볼릭링크라고 부르는 개념이나 윈도우에서 바로가기라고 부르는 개념이 그 예외인데, 예컨데
C:\Users\name\Pictures 라는 작업 디렉토리에 연결된 바로가기가 서로 다른 경로에 존재하는 경우 서로 다른 경로를 지니게 되는 결과가 생기죠.
즉 C:\Users\name\Pictures 디렉토리에 연결된 동일한 바로가기 아이콘인 shortcut1.ico 파일이 서로 다른 디렉토리에 저장되어 있는 경우 그 저장된 경로 개수만큼 경로가 있다고 볼 수 있습니다.
처럼 하나여도 그에 도달하는 경로는 다수일 수 있다는 것입니다. 이는 디렉토리 개념이 고안된 이후에 사용의 편리성을 위해 고안된 예외적인 확장 개념으로 이해하면 됩니다. 최종적인 작업 디렉토리는 하나지만, 사용의 편의를 위해 고안된 확장 개념으로 이해해두면 됩니다.
정리해보자면
(1) 디렉토리는 파일의 체계적 저장을 위해 만들어졌다. 사무실의 캐비넷을 떠올려보라. (2) 디렉토리의 핵심 개념은 어떤 경로냐는 것이다. (3) 최종 작업 디렉토리는 유일하지만 그 경로는 확장적으로 다수일 수 있다.
이정도만 알아두면 입론이 됩니다.
디렉토리는 보통 명령어 체제로 운용되는 운영체제에서 유래한 개념인데 윈도우처럼 그래픽컬한 인터페이스로 운용되는 운영체제에서는 폴더라고 부르기도 하므로 참고하세요. 폴더는 디렉토리를 시각적으로 폴더 모양으로 나타내는데서 비롯된 이름입니다. 둘다 용어상의 차이일뿐 개념은 같습니다.
이해가 잘되게 설명했는지 모르겠는데 일단 입론으로 참고는 되실겁니다.
정리: 디렉토리를 토대로 경로가 제시되면 떠올려볼 사항들 (1) 어느 운영체제의 경로 표시인가? (2) 경로에 표시된 디렉토리에 어떻게 찾아갈 것인가? (3) 디렉토리에 찾아가서 어떤 작업을 할 것인가?
(1) 어느 운영체제의 경로 표시인가? 운영체제에서 경로란 여러 의미를 갖지만, 디렉토리와 연관되면 디렉토리와 파일이 저장된 위치를 가리킵니다. 윈도우에서 C:\Users\name\Pictures\flower.jpg 라는 경로가 주어졌다면 이 경로는 윈도우 운영체제에서 유효하며 각각의 단계를 찾아가서 처리하라는 의미입니다.
윈도우 운영체제에서는 전통적으로 디스크를 파티션으로 나누어 각각의 파티션에 A부터 Z까지의 문자를 부여해서 디스크 드라이브라고 불렀습니다.
위에서 예를 들은 C:\Users\name\Pictures\flower.jpg 에서 제일 앞의 C:\ 가 드라이브를 나타낸 기호로, C 드라이브라고 부르며 보통 윈도우가 부팅된 디스크에 부여됩니다.
각각의 디렉토리 구조는 \ 로 잘라내져서 계층을 표현하구요. 위에서는 사용자 계정을 의미하는 Users 디렉토리 아래 계정명 name으로 된 홈디렉토리 아래 Pictures 디렉토리를 찾아서 flower.jpg 파일에 처리를 하라는 의미가 됩니다.
리눅스에서는 반대로 / 로 구분하여 디렉토리 계층을 표현하구요. 윈도우와 달리 드라이브 문자가 없이, 장치 파일을 임의의 디렉토리에 마운트해서 씁니다.
/dev/sda1 /mnt/windows/C
이런 식으로 표현합니다.
정리하자면 운영체제마다 경로 표시 규칙이 다르고, 대개 윈도우 계열에서는 드라이브 이름이 부여되어 하위 디렉토리를 \로 구분해서 나타내며, 유닉스 계열에서는 드라이브 문자 없이 /로 구분해서 나타낸다는게 핵심입니다.
(2) 경로에 표시된 디렉토리에 어떻게 찾아갈 것인가? 경로가 제시되면 우선 생각할게 (1)이구요. (1)이 해독되면 (2) 경로에 표시된 디렉토리에 어떻게 찾아갈지 결정해야 합니다.
위의 예를 들면 윈도우에서 파일 탐색기를 실행해서 클릭하면서 찾아가도 되구요. cmd.exe 를 실행해서 cd 명령어로 찾아가도 됩니다.
(3) 디렉토리에 찾아가서 어떤 작업을 할 것인가? (1)과 (2)가 해결되면 결정해야 할 것은 어떤 작업을 할 것인가입니다. 이는 디렉토리 용도와 파일의 형식에 의해 결정되고 목적에 따라 달라집니다.
누군가 이메일로 자기가 기르는 꽃 사진을 보내오고 위와 같은 파일을 첨부해서 보여줬다면 우선 다운로드를 합니다. 이 경우에 경로를 C:\Users\name\Pictures로 다운로드 받게 설정하구요. 다운로드가 되면 파일 탐색기를 열어 해당 경로로 가서 flower.jpg 파일을 더블클릭하면 뷰어가 실행될 것입니다. 이메일로 보내는 이유가 이미지 파일을 그냥 봐달라는 것이면 이렇게 하면 되구요. 리터칭을 해달라고 한 것이면 파일 탐색기 외에 포토샵에서 불러와서 처리하면 됩니다.
때로는 파일을 지울때도 해당 디렉토리 경로를 알아야하구요.
이미지 파일의 경우 리터칭을 해서 리터칭 완료한 이미지 파일을 답신해야 한다면, 저장된 경로를 잘 숙지하고 있다가 이메일에 첨부하면 됩니다.
정리하자면 디렉토리는 파일 저장과 이용을 체계적으로 나타내기 위해 제정된 규칙이고, 디렉토리와 파일을 어떻게 처리해야 할지 기준을 제공하는 규칙이라는 것을 잘 알아두면 됩니다.
webmin은 웹기반 리눅스 서버 설정 관리자로 매우 편리한 설정이 가능하게 해줍니다. 물론 설정 사항들에 대한 지식이나 설정값을 선택하고 입력하는 지식은 이미 있어야 하지만요. 서버 설정 경험이 일정 정도 있고 서버에 대한 경험이 있는 사용자에게 직접 명령어 타이핑을 고안할 필요없이 매우 광범위한 설정을 UI로 돕는 기능을 제공하고 있습니다.
데비안, 우분투 계열 리눅스와 레드햇 기반 리눅스를 모두 지원합니다. 슬랙웨어 기반은 어떤지 미확인입니다.
제가 사용하는 리눅스는 리눅스 민트 계열의 하모니카OS인데요. 우분투 기반인만큼 apt 명령어로 간단하게 설치가 되어 사용이 가능해집니다.
쿠분투에서 muon 으로 chromium-browser를 설치할 때 모종의 이유로 도중에 멈추면 설정과 파일들이 엉켜서 설치를 재시도할때마다 error status 10 내고 중단됩니다. 이를 muon 패널에서 해결하는게 불가능해 보이구요. 명령어로 처리하면 muon에서 다시 설치 시도를 할 때 성공하게 할 수 있습니다. 아래처럼 입력합니다.
톰캣 9는 몇가지 설정을 편리하게 하기 위해 기본적으로 관리 툴을 지원합니다. 일단 설치가 되어있다는 전제 하에 해설합니다.
우선 톰캣 9이 잘 실행되어 있다면 기본값으로 했을 때 http://localhost:8080 을 실행하면 문서가 뜨는데 거기에 링크를 누르면Virtual Host Manager와 Web Application Manager 페이지가 뜹니다. 그런데 기본적으로 유저네임과 패스워드가 지정되어 있어야 접근이 되고 그렇지 않은 경우 401 에러 납니다.
9월 15 12:44:55 pizza-hot tomcat9[1325]: No JDK or JRE found – Please set the JAVA_HOME variable or install the default-jdk package
라고 나오면
1
2
3
$ps-ax|grep tomcat
을 쳐봐도 실행이 안된 상태로 나옵니다.
이 경우 JAVA_HOME 환경변수를 설정해야 하는데 .bashrc나 /etc/environment 같은 파일에 해두기보다 아래 파일에 하면 즉효입니다.
/etc/default/tomcat9
이 파일을 vi로 열어서 JAVA_HOME을 추가합니다.
1
2
3
4
$sudo vi/etc/default/tomcat9
JAVA_HOME=/usr/lib/jvm/java-14-openjdk-amd64
정확한 디렉토리는 설치한 openjdk 마다 다릅니다. 이를 확인하려면
1
2
3
4
5
$cd~
$locate openjdk>r
$sudo vir
해서 나온 디렉토리 중에 위에 표시한 디렉토리와 같은 패턴의 디렉토리를 찾으면 됩니다.
이렇게 하고나서
1
2
3
4
5
$sudo systemctl daemon-reload
$sudo systemctl start tomcat9
$sudo systemctl status tomcat9
이렇게 해서 작동하면 성공입니다.
참고로 이 글에서는 tomcat 9에 집중해서 위와 같은 기술을 했으나, 타 자바 앱이 돌아가려면 .bashrc나 /etc/environment 에도 JAVA_HOME 환경변수를 지정하는 것은 필요합니다. /etc/default/tomcat9은 tomcat 9 에만 적용됩니다.