Proxy가 존재하는 환경에서 리눅스 서버는 제대로 시간 동기화가 되지 않는다.

대개의 경우 ntpdate 등 시간 동기화 소프트웨어도 대부분 제대로 동작하지 않는다.

물론, 이것은 Proxy 설정과는 좀 다른 경우이지만 Proxy가 존재할 경우 종종 필요한 기능이다.

따라서 해당 카테고리에 정리해 놓았다.

 

방법은 간단하다.

단 sudo로 인해 패스워드를 물어보기 때문에 패스워드를 입력해서 실행한 후 곧바로 다시 실행해주는 것이 좋다.

앞 서 입력한 패스워드로 인해서 재실행 시에는 패스워드 입력을 스킵하고 바로 실행이 되기 때문이다.

sudo date -s "$(wget --no-cache -S -O /dev/null google.com 2>&1 | \
sed -n -e '/  *Date: */ {' -e s///p -e q -e '}')"

 

□ 상세 설명

아래 명령 wget을 실행하면 첫줄에 호출 시간과 함께 장황한 http 프로토콜 로그가 출력된다.

$ wget --no-cache -S -O /dev/null google.com 2

--2020-06-11 19:36:36--  http://google.com/
Connecting to 10.10.15.10:8080... connected.
Proxy request sent, awaiting response... 
  HTTP/1.1 301 Moved Permanently
  Location: http://www.google.com/
  Content-Type: text/html; charset=UTF-8
  Date: Thu, 11 Jun 2020 10:36:36 GMT
  Expires: Sat, 11 Jul 2020 10:36:36 GMT
  Cache-Control: public, max-age=2592000

반드시 google.com을 할 필요는 없으며 이를테면 naver.com이라든지, 신뢰성이 있는 어떤 사이트를 입력해도 가능하다.

 

아래 sed 명령은 스트림 편집 명령으로 Data로 시작하는 문장을 찾는다.

sed -n -e '/  *Date: */ {' -e s///p -e q -e '}'

 

따라서 아래와 같이 두 문장을 연결하여 수행하면 날짜 부분만 출력하게 된다.

$ wget --no-cache -S -O /dev/null google.com 2>&1 | \
  sed -n -e '/  *Date: */ {' -e s///p -e q -e '}'

Thu, 11 Jun 2020 10:41:01 GMT

 

해당 날짜를 data -s 의 입력값으로 전달하여 날짜를 변경하는 것이다.

반응형

'Linux > Proxy' 카테고리의 다른 글

Proxy setting, git  (0) 2023.06.04
Proxy setting, curl  (0) 2023.05.28
Proxy setting, npm (ubuntu 18.04)  (0) 2020.04.06
Proxy setting, jupyter notebook  (0) 2020.02.06
Proxy setting, conda (Windows)  (0) 2019.12.08

ClamAV는 다양한  운영체제에서 설치 가능한 무료 백신이다.

리눅스용 버전은 터미널에서 수행이 가능하며 별도 UI 화면을 제공하지는 않는다.

다만, ClamAV에서 UI를 사용가능하도록 지원하는 ClamTK라는 프로그램도 존재한다.

 

□ ClamAV 장단점

장점

단점

- 터미널을 통한 실행
- 오픈소스 백신 프로그램으로 무료 사용 가능
- 정기적인 업데이트
- apt-get을 통한 간단한 설치와 설정
- Window와 MAC OS 지원

- 실시간 검사를 지원하지 않음
- UI를 지원하지 않음

 

□ ClamAV Install

sudo apt-get install clamav

 

□ ClamAV 설치 후 바이러스 정의 업데이트

sudo freshclam

 

□ ClamAV 검사 방법

sudo clamscan -r [디렉토리명]

예)
sudo clamscan -r /          # 루트 디렉토리 이하 전체를 검사
sudo clamscan -r /home      # home 디렉토리 이하 검사

수행이 잘 완료되면 아래와 같이 결과가 출력된다.

----------- SCAN SUMMARY -----------

Known viruses: 6930494

Engine version: 0.102.2

Scanned directories: 1147

Scanned files: 40950

Infected files: 0

Data scanned: 1849.43 MB

Data read: 1125.67 MB (ratio 1.64:1)

Time: 156.619 sec (2 m 36 s)

 

□ ClamAV 관련 오류

1) freshclam 사용 중 업데이트 오류

​​sudo freshclam 명령어 실행 시 아래와 같은 메시지가 출력되며 오류 발생하면 

ERROR: /var/log/clamav/freshclam.log is locked by another process

ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log)

아래와 같이 수행한다.

$ sudo lsof /var/log/clamav/freshclam.log
$ sudo pkill -15 -x freshclam
$ sudo /etc/init.d/clamav-freshclam stop
$ sudo freshclam
$ sudo /etc/init.d/clamav-freshclam start

그냥 freshclam.log를 삭제하는 방법도 존재한다. 권장할 만한 방법은 아니다.

sudo rm -rf /var/log/clamav/freshclam.log

 

반응형

'Linux' 카테고리의 다른 글

Ubuntu GUI 원격접속  (0) 2023.03.30
texlive & texmaker install, ubuntu 18.04  (0) 2020.07.19
node.js, npm 설치  (0) 2020.04.07
SQLAlchemy 설치, pip install SQLAlchemy  (0) 2020.04.03
필수 SW, CPU 온도 체크, lm-sensors  (0) 2020.03.28

□ node.js install 방법

$ sudo apt-get update 
$ sudo apt-get install nodejs

□ npm install 방법

$ apt-get install npm

 

반응형

'Linux' 카테고리의 다른 글

texlive & texmaker install, ubuntu 18.04  (0) 2020.07.19
clamav install  (0) 2020.05.10
SQLAlchemy 설치, pip install SQLAlchemy  (0) 2020.04.03
필수 SW, CPU 온도 체크, lm-sensors  (0) 2020.03.28
Ubuntu, Nvidia-docker 설치  (0) 2020.03.28

npm에서 Proxy 세팅 방법

 

□ npm config에서 설정

아래와 같이 npm config를 통해서 설정이 가능하다.

$ npm config set proxy http://10.10.10.10:8080
$ npm config set https-proxy https://10.10.10.10:8080
$ npm config set strict-ssl false
$ npm config set registry http://registry.npmjs.org/

 

□ npm config 정보 확인

$ npm config list

 

□ npm config 정보 저장 위치

~/.npmrc 파일에 저장된다.

$ vi ~/.npmrc

 

 



반응형

'Linux > Proxy' 카테고리의 다른 글

Proxy setting, curl  (0) 2023.05.28
Proxy setting, date - Proxy가 있을 때 시간 동기화  (0) 2020.06.11
Proxy setting, jupyter notebook  (0) 2020.02.06
Proxy setting, conda (Windows)  (0) 2019.12.08
Proxy setting, pip (ubuntu)  (0) 2019.11.08

SQLAlchemy는 python에서 데이터베이스와 연결을 위해 사용하는 라이브러리 중 하나이다.

관계형 데이터베이스의 테이블과 컬럼들을 ORM(Object Relational Mapper)로 엮어서 python의 class로 표현할 수 있게 해주므로 데이터베이스의 테이블에 데이터 조회, 입력, 수정,삭제 등의 처리를 편리하게 도와준다.

SQLAlchemy는 pip를 이용해서 설치할 수 있는데 간단히 아래처럼 쓰면 된다.

$ pip install sqlalchemy

그러나 SQLAlchemy 최신 버전은 경우에 따라 의존성(dependency) 문제로 설치가 안될 때가 있다.

최근에 있어서 SQLAlchemy-1.3.15 버전이 그랬다. 아래는 설치 중에 오류(error)가 발생한 경우이다.

$ pip install sqlalchemy

Collecting sqlalchemy
  Downloading SQLAlchemy-1.3.15.tar.gz (6.1 MB)
     |████████████████████████████████| 6.1 MB 708 kB/s 
  Installing build dependencies ... error
  ERROR: Command errored out with exit status 1:
   command: /venv/bin/python3 /venv/lib/python3.6/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-apw7ga27/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org -- 'setuptools>=40.8.0' wheel
       cwd: None
  Complete output (7 lines):
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f95be8f95f8>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/setuptools/

 

이런 경우 설치를 위해 사용할 수 있는 방법 중 하나는... 역시 버전 다운이다.

1.3.15라면 1.3.14나 1.3.13 버전으로 낮추어 본다. 안정적이라고 글들이 여기저기 많은 버전일수록 당연히 좋다.

$ pip install sqlalchemy==1.3.13

 

 

반응형

'Linux' 카테고리의 다른 글

clamav install  (0) 2020.05.10
node.js, npm 설치  (0) 2020.04.07
필수 SW, CPU 온도 체크, lm-sensors  (0) 2020.03.28
Ubuntu, Nvidia-docker 설치  (0) 2020.03.28
필수 SW, FileZilla Client  (0) 2020.03.28

lm-sensors는 CPU 온도 체크를 하는 가장 간단한 애플리케이션 중 하나이다.

xsensors와 같은 GUI를 지원하는 도구도 존재하지만 경우에 따라 X windows와 궁합이 맞지 않을 때가 있다.

 

사실 CPU 온도 체크란 게 필수라고 하긴 좀 약하지만 뜨거워져도 팔자려니 하며 쓰는 타입이라 ...,

딥러닝을 연구하거나 개발 중이라면 GPU 온도 만큼이나 CPU 온도도 체크가 필요할 때가 종종 생긴다.

학습 도중에 시스템이 죽는 것을 보고 싶지 않다면 온도라도 알아야 뚜껑이라도 열어 놓고 부채질이라도 해야하지 않는가 ...

 

GPU는 nvidia-smi에서 쉽게 확인이 가능하고 CPU는 여러 가지 도구가 있는데 가장 쉽게 쓰기엔 역시 lm-sensor만한 게 없다.

 

lm-sensors 소개

우분투 커뮤니티에서는 다음과 같이 소개되어 있다.
소개와 같이 제공 기능은 CPU와 기타 몇몇 시스템의 온도, 팬 스피드, 전압 측정으로 간단 명료하다.

Ubuntu can monitor CPU and other system temperatures, fan speeds, and voltages via command line, using the package lm-sensors, or via GUI applets in your desktop.

 

□ lm-sensors 설치 

$ sudo apt-get lm-sensors

□ lm-sensors 초기 설정

초기 설정은 설치된 장비의 센서들을 인식하고 모니터링 여부를 설정하는 단계이다.

$ sudo sensors-detect

실행하면 많은 질문이 나오는 데 너무 고민하지 말자. 모두 yes 처리~

다만 너무 찜찜하다면 I2C/SMBus adapters 는 no 처리를 한다. 이유인 즉 대부분 질문에  totally safe, usually safe, normally safe라고 안전한 정도를 기재해 놓는데 해당 질문의 경우, 수년 째 종종 몇몇 시스템에서 문제의 원인으로 보고되었다(reported to cause trouble)라고 표기되고 있기 때문이다.

모두 yes 처리를 했어도 언제든 다시 설정이 가능하므로 괜한 걱정은 하지 않아도 된다.

 

□ lm-sensors 실행 : CPU 온도 측정

$ sensors

간단한 입력으로 사용이 가능하며 아래처럼 출력된다. 특이사항으로 아래 시스템은 cpu_fan 속도 확인은 잘 안되는 것으로 보인다.

$ sensors

asus-isa-0000
Adapter: ISA adapter
cpu_fan:        0 RPM

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +38.0°C  (high = +100.0°C, crit = +110.0°C)
Core 0:        +38.0°C  (high = +100.0°C, crit = +110.0°C)
Core 1:        +37.0°C  (high = +100.0°C, crit = +110.0°C)
Core 2:        +35.0°C  (high = +100.0°C, crit = +110.0°C)
Core 3:        +36.0°C  (high = +100.0°C, crit = +110.0°C)
Core 4:        +36.0°C  (high = +100.0°C, crit = +110.0°C)
Core 5:        +36.0°C  (high = +100.0°C, crit = +110.0°C)
Core 6:        +37.0°C  (high = +100.0°C, crit = +110.0°C)
Core 7:        +37.0°C  (high = +100.0°C, crit = +110.0°C)
Core 8:        +38.0°C  (high = +100.0°C, crit = +110.0°C)
Core 9:        +37.0°C  (high = +100.0°C, crit = +110.0°C)
Core 10:       +36.0°C  (high = +100.0°C, crit = +110.0°C)
Core 11:       +36.0°C  (high = +100.0°C, crit = +110.0°C)
Core 12:       +36.0°C  (high = +100.0°C, crit = +110.0°C)
Core 13:       +37.0°C  (high = +100.0°C, crit = +110.0°C)
Core 14:       +37.0°C  (high = +100.0°C, crit = +110.0°C)
Core 15:       +37.0°C  (high = +100.0°C, crit = +110.0°C)

 

lm-sensors도 당연히 소스가 공개되어 있다. 궁금하다면 아래를 참고하면 된다.

https://github.com/lm-sensors/lm-sensors

 

lm-sensors/lm-sensors

lm-sensors repository. Contribute to lm-sensors/lm-sensors development by creating an account on GitHub.

github.com

 

반응형

'Linux' 카테고리의 다른 글

node.js, npm 설치  (0) 2020.04.07
SQLAlchemy 설치, pip install SQLAlchemy  (0) 2020.04.03
Ubuntu, Nvidia-docker 설치  (0) 2020.03.28
필수 SW, FileZilla Client  (0) 2020.03.28
docker pytorch 설치  (0) 2019.11.08

Nvidia-docker를 설치하기 전에 당연히 docker는 먼저 설치가 되어 있어야 한다.

 

설치된 docker 환경에서 GPU를 사용할 수 있도록 nvidia-docker을 설치하는 가장 좋은 방법은 역시 nvidia에서 공식적으로 제공하는 github 사이트를 이용하는 것이다.

왜냐하면 Nvidia가 제공하는 공식 사이트이니까 당연한 것도 있지만 nvidia-docker 버전도 변경 주기가 짧은 편이라 조금씩 설치나 운용 방법이 달라지기 때문에 가장 최신 내용을 확인하려면, 당연히... 제작사가 제공하는 사이트가 가장 빠르기 때문이다.

사실 이 페이지도 이전 설치 방법은 벌써 낡아서 해당 페이지를 삭제하고 새로 업로드 한 것이다. 원치 않은 삽질 때문에 빡침이.. 쿨럭..

 

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html

 

User Guide — NVIDIA Cloud Native Technologies documentation

GPUs can be specified to the Docker CLI using either the --gpus option starting with Docker 19.03 or using the environment variable NVIDIA_VISIBLE_DEVICES. This variable controls which GPUs will be made accessible inside the container. Note When using the

docs.nvidia.com

 

그래도 귀찮은 당신을 위해서는 아래와 같이 수행하면 된다. 

 

1) 혹시 이전 버전이 있다면 아래 스크립트로 이전 버전을 제거한다.

$ docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
$ sudo apt-get purge -y nvidia-docker

 

2) 아래 스크립트를 실행해서 nvidia-docker 배포판을 설치하기 위한 환경을 구성한다.

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

 

3) 해당 스크립트는 반드시 위 작업 이후 실행해야 한다.

$ sudo apt-get update 

 

4) 이제 nvidia-docker를 설치한다.

$ sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker

 

6) 설치 여부 검증하기, 하기와 같이 nvidia-smi 정보가 잘 나오면 성공.

# 2023.05.29 기준, ubuntu 20.04

$ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

 

# 2023.05.29 기준, ubuntu 18.04

$ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu18.04 nvidia-smi

 

# docker version 19.03 이상
$ docker run --gpus all nvidia/cuda:10.0-base nvidia-smi

# docker version 19.03 미만
$ docker run --runtime=nvidia nvidia/cuda:10.0-base nvidia-smi

 

※ 주의사항

ㆍ2020년 3월 기준, nvidia-docker 실행 스크립트가 변했음을 알 수 있다.

    docker version 19.03 부터 nvidia-docker를 설치하면 --gpus 명령을 사용해야 한다. 

    19.03 이하 버전에서는 nvidia-docker 버전에 따라 아래처럼 사용한다.

    nvidia-docker v2에서는 --gpus all 대신 --runtime=nvidia를 사용한다.

2023년 5월 기준, 

    --runtime=nvidia --gpus all 모두 사용한다. (nvidia 사용자 가이드)

반응형

'Linux' 카테고리의 다른 글

SQLAlchemy 설치, pip install SQLAlchemy  (0) 2020.04.03
필수 SW, CPU 온도 체크, lm-sensors  (0) 2020.03.28
필수 SW, FileZilla Client  (0) 2020.03.28
docker pytorch 설치  (0) 2019.11.08
실행중인 docker container 접속  (0) 2019.09.29

Linux 뿐만 아니라 Window에서도 거의 "반드시"라고 해도 좋을 정도로 필요한 FTP용 애플리케이션이다.

Ununtu에서는 세 가지 방법으로 설치가 가능하다.

 

1) apt-get으로 설치

2) Ubuntu Software에서 내려받아 설치(권장)

3) FileZilla 사이트에서 내려받아 설치

 

□ apt-get으로 설치 

가장 쉽다. 그러나 이것이 항상 최선인 것은 아니다.

sudo apt-get install filezilla

 

Ubuntu Software에서 설치

가장 권장한다. 사실 apt-get과 다를 바 없지만, 그래도 Ubuntu가 엄선해서 골라준다고 믿자.

설치 역시 apt-get 만큼이나 쉽다.

 

1) Ubuntu Software 실행

해당 아이콘으로 Ubuntu Software를 실행한다.

 

2) 검색창에서 FileZilla를 검색하고 설치(install)한다.

 

FileZilla 사이트에서 설치

FileZilla 사이트에 접속해서 FileZilla Client 최신버전을 받아서 설치하면 끝~

https://filezilla-project.org/

 

FileZilla - The free FTP solution

Overview Welcome to the homepage of FileZilla®, the free FTP solution. The FileZilla Client not only supports FTP, but also FTP over TLS (FTPS) and SFTP. It is open source software distributed free of charge under the terms of the GNU General Public Licens

filezilla-project.org

 

반응형

'Linux' 카테고리의 다른 글

필수 SW, CPU 온도 체크, lm-sensors  (0) 2020.03.28
Ubuntu, Nvidia-docker 설치  (0) 2020.03.28
docker pytorch 설치  (0) 2019.11.08
실행중인 docker container 접속  (0) 2019.09.29
nvdia driver, CUDA, CUDNN 설치 여부 및 버전 검사  (0) 2019.09.15

visdom은 facebook에서 데이터 시각화를 위해 제공하는 기능이다.

딥러닝을 위해 pytorch를 사용한다면 기본적으로 설치해 두는 것이 좋다.

 

□ visdom 설치

pip install visdom

 

□ visdom 실행

python -m visdom.server

 

visdom은 웹 상에서 호출이 가능하고 visdom server가 정상적으로 수행되면 기본적으로 제공하는 포트는 8097이다.

ex) http://127.0.0.1:8097

 

이때 포트 번호는 변경할 필요가 종종 있다. 한 예로 , docker 환경에서 사용할 경우에는 8097 포트를 미리 docker 외부 연결이 가능하도록 지정하지 않았다면 docker에서 지정해 놓은 포트로 변경해야 사용이 가능하다.

포트 변경을 위해서는 -port 옵션을 사용한다.

 

□ visdom port 변경

python -m visdom.server -port [port number]

 

만약 docker 지정 포트가 9002 라면 visdom server 실행 시 -port 옵션에 9002를 기재한다. 

ex) python -m visdom.server -port 9002

 

 

□ python에서 visdom 실행

python에서는 아래처럼 간단히 호출이 가능하며 default port로 8097을 사용하여 통신한다.

import visdom
vis = visdom.Visdom()

따라서 visdom port를 변경하고 그대로 호출하면 아래와 같은 오류가 발생한다.

□ python에서 변경된 port로 visdom 실행

import visdom
vis = visdom.Visdom(port='9002')

사용 예) 변경된 port가 9002일 경우, 아래와 같이 오류없이 잘 실행된다.

웹 상에서 확인하면 Hello 문구가 잘 출력된 것을 볼 수 있다.

 

 

반응형

파이썬 print문에서 format 메소드 사용 시 서식 지정방법은 아래와 같다.

 

□ 형식

① 소수점을 포함한 전체 길이 지정

② 소수점 이하 길이 지정, 반올림 처리

③ 서식지정자

 

□ 출력 방식

소수점을 포함하여 전체 길이를 출력한다. 한 예로 6.2f는 소수점 이상 3자리, 소수점, 소수점 이하 2자리로 출력한다.

소수점은 반올림 처리된다.

소수점 이상 자리수가 소수점을 포함한 전체 길이보다 클 경우는 전체 길이 지정은 무시된다.

소수점 이하 길이가 우선순위가 높다. 소수점 이하 길이를 먼저 처리한 후 나머지 자리수를 맞춘다.

전체 길이 지정이 클 경우 숫자 앞에 공백이 남은 길이만큼 추가된다.

소수점 길이가 클 경우 뒤에 0으로 채워진다.

 

예1) 소수점 이상 3자리, 소수점, 소수점 이하 2자리로 총 6자 길이로 출력된다.

print( "{:6.2f}".format( 123.456 ))
123.46

예2) 소수점은 반올림 처리된다.

print( "{:6.2f}".format( 123.456 ))	# 소수점 3자리에서 반올림
123.46
print( "{:6.2f}".format( 123.451 ))	# 소수점 3자리에서 반올림
123.45

예3) 소수점 이상 자리수가 소수점을 포함한 전체 길이보다 클 경우는 전체 길이 지정은 무시된다.

print( '{:4.2f}'.format( 123.456))	# 전체 길이 4에 맞추어 3.46 또는 123.(4글자)이 출력되는 것이 아니다.
123.46

 예4) 소수점 이하 길이 지정에 대한 우선순위가 높다.

print( '{:1.2f}'.format( 123.456))	# 소수점 2자리를 지정하고 전체길이 1은 무시된다.
123.46

예5) 전체 길이 지정이 클 경우 숫자 앞에 공백이 남은 길이만큼 추가된다.

print( '{:6.2f}'.format( 123.456))
print( '{:7.2f}'.format( 123.456))
print( '{:8.2f}'.format( 123.456))
print( '{:9.2f}'.format( 123.456))
123.46
 123.46
  123.46
   123.46

예6) 소수점 길이가 클 경우 뒤에 0으로 채워진다.

print( '{:6.2f}'.format( 123.456))
print( '{:6.3f}'.format( 123.456))
print( '{:6.4f}'.format( 123.456))
print( '{:6.5f}'.format( 123.456))
print( '{:6.6f}'.format( 123.456))
123.46
123.456
123.4560
123.45600
123.456000
반응형

+ Recent posts