본문 바로가기

서버 관리

(23)
리눅스 패키지 관리 [1. 개요] [2. remove, purge]# apt remove "pkg_name"패키지만 제거설정 파일 이나 의존성 패키지는 삭제하지 않는다.# apt purge "pkg_name"패키지와 설정 파일 제거의존성 패키지는 삭제하지 않는다.# apt autoremove --purge "pkg_name"패키지 및 의존성 패키지 삭제--purge 를 명시한 경우 설정 파일까지 제거[3. list]# apt list# dpkg -l
samba 서버 설치 [1. 개요]파일 공유 서버를 구축하기 위해, SMB 프로토콜을 구현한 samba 를 설치하고, 운영하는 대략적인 방법을 정리한다. 환경Ubuntu 20.04redhat 계열...설치 순서samba 패키지 설치설정 파일 작성사용자 계정 등록데몬 재실행[2. samba 패키지 설치]# apt install samba -y -- 아래는 설치 확인을 위함# smbd --version# systemctl status smbd -- 아래는 optional (외부 접속이 필요한 경우 고려)# apt install smbclient -y[3. 설정 파일 작성]default 로 아래 위치에 설정 파일이 있음./etc/samba/smb.conf설정파일의 구성은대괄호를 기준으로 구분되며, 그 밑에 상세 설정을 기술한다.e..
리눅스 공유 라이브러리에 관하여 [1. 개요].so 파일을 참조하는 application (c++ 으로 작성 된 혹은...) 은 런타임 시,필요한 공유 라이브러리를 로드하여 사용하는데, 이 때, 시스템 상 미리 정의 된 위치에서 필요한 라이브러리를 찾는다. 아래와 같은 명령어를 통해, 사용하고자 하는 app 이 참조하는 라이브러리 목록을 확인 할 수 있다.$ ldd $(which curl) 문제는, 필요한 라이브러리를 찾지 못하는 경우, app 실행이 되지 않는 것이며,여기서는 이러한 문제를 해결하기 위하여 해야 할 조치를 정리한다.[2. 기본적으로 찾는 경로]가장 단순한 방법은 시스템이 기본적으로 찾는 위치에 사용 할 라이브러리를 위치시키는 것이다. 32bit 프로그램은 아래와 같고/lib/usr/lib/usr/local/lib64..
리눅스. 스택 크기에 관한 고찰 [1. 개요]Segmentation fault 와 관련하여 고민한 내용 정리[2. 상황]특정 함수 진입 시, c++ 로 작성한 애플리케이션이 segmentation fault 발생과 함께 죽는 현상.gdb 로 디버깅 시, 함수 진입 만 하였는데, segmentation fault 가 발생. 의심이 것 중 하나는 스택 오버플로우..[3. 예제] 1 #include 2 3 4 void myfunc() 5 { 6 char arr[MYSZ * 1024 * 1024]; 7 std::cout  ulimit -s 가 8192 (8 Mbyte 인 경우)g++ main.cpp -g -DMYSZ=9g++ main.cpp -Wl,-z,..
multibyte string to widechar string [1. 개요]멀티바이트 형태의 문자열(UTF-8) 을 wide char 형태의 문자열(유니코드) 로 변환하는 방법 정리.[2. 오해]std::string 을 std::wstring 으로 변환하는 방법을 단순히 아래와 같은 방법으로 알고 있었는데, 아래 방법은 틀린 방법이다.std::wstring wstr(str.begin(), str.end());위 코드는 단순히 멀티바이트 형태의 string 의 내부 버퍼를 복사할 뿐이다.#include #include #include int main(){ const char * buf = "안녕하세요"; std::string str = buf; std::wstring wstr(str.begin(), str.end()); ..
file 명령어 [1. 개요]file 명령어 사용법 정리.[2. file 의 인코딩 유형을 확인하고자 할 때]file -i test.txt
journalctl 로그 파일 관리 (디스크 확보를 위한) [1. 개요]리눅스 서버 디스크 용량 확보를 위함./var/log 에서 용량을 많이 차지하는 로그 파일 삭제가 필요.특히, /var/log/journalctl시스템 데몬 관련 로그 파일이라 임의로 지우면 안됨. (아마도)[2. 명령어]journalctl --list-boots# journalctl --dist-usage# journalctl --vacuum-size={BYTES}# Reduce disk usage below specified size journalctl --vacuum-files={INT}# Leave only the specified number of journal files journalctl  --vacuum-time={TIME}#  Remove journal files older ..
chrome 임시 파일 관련 용량 관리 [1. 개요]python selenium 을 이용하여 자동화 작업 운영 중, 리눅스 서버의 디스크 사용량이 너무 높아진 것을 확인/tmp 디렉토리에 disk 사용량이 매우 높은 것을 확인du 명령어를 통해 해당 디렉토리에서 디스크 사용량이 높은 디렉터리를 확인하였으나,특별히 사용량이 높은 디렉토리는 없었음.숨김 파일을 확인.org.chromium.Chromium 이라는 이름으로 시작하는 숨겨진 디렉토리가 매우 많았고, 용량도 대략 1G 정도 차지다행히도, 임시 파일들이 롤링되어 저장되어 있었음.[2. 해결]접근 한지 7일 보다 오래된 임시파일을 모두 삭제함.
[내용 채워야 됨] 인코딩 변경 chcp / locale 작성해야 되는데.
copy 명령어에 대해서 [1. 개요] samba 로 연결된 서버에서 특정 키워드를 갖는 파일 이름으로 갖는 1천여개 이상의 파일을 복사해올 필요가 있었다. cmd 에서 작업을 진행했는데, 복사한 파일이 원본 파일보다 바이트 수가 낮은 문제가 있었다. [2. 해결] 당시 사용한 명령어는 아래와 같다. for /F %a in ('type tclist.txt') do copy "외부 파일경로"\%a_* " 내 파일 경로" 여기서 copy 에 옵션을 추가하였다. copy /b 대상이 이진 파일임을 명시한다. /b 옵션이 없으면 텍스트 모드로 여는지 까지는 확인해보지 않았지만, 문제는 해결 할 수 있었다.