[Linux] apt 패키지 버전 다운 그레이드RDS에 접속 하기위해 mysql-client를 설치했는데, 버전 지정 없이 설치 할 경우 8.0.34 버전이 설치가된다.현재 mysql-client 8.0.34 버전은 불필요한 에러 로그가 많이 발생하는 이슈가 있어, 다운그레이드를 진행했다.(관련 내용은 https://bugs.launchpad.net/ubuntu/+source/mysql-8.0/+bug/2031548 에서 확인 가능) 현재 설치된 패키지의 버전을 확인하는 방법은 다음과 같다.dpkg --list | grep 패키지 버전 확인apt로 설치된 패키지를 다운그레이드 하는 과정을 진행해보자.먼저 패키지 저장소에 설치할 수 있는 버전을 확인해야한다.sudo apt-cache madison mys..
[Linux] 네트워크 관련 명령어 정리 1. Curl/Wget 웹 서버로 부터 컨텐츠를 가져오는 명령어 HTTP, HTTPS, FTP 프로토콜을 통해 컨텐츠를 다운로드 한다. HTTP Post request를 지원한다. curl google.com wget google.com 2. nslookup DNS 서버에 질의하여 도메인의 정보를 조회하는 명령어 nslookup google.com IP로 도메인 네임을 조회하는 것도 가능하다. nslookup 3. Telnet 원격 호스트와 텍스트 기반으로 통신하기 위한 프로토콜 TCP/IP 프로토콜을 사용하여, 특정 포트에 접속하여 원격 서버와 통신한다. telnet google.com 80 4. Ping 네트워크 상태를 확인하려는 대상에게 패킷을 보낸 후 대상..
[Linux] 환경 설정 파일 정리 /etc/profile 시스템 전역 쉘 변수 user가 쉘이 로그인하게 되면 가장 먼저 읽는 파일 USER, LOGNAME, HOSTNAME 등의 쉘 변수들이 선언되어 있음 시스템 전역 쉘 변수들을 초기화 /etc/bashrc 쉘 함수, Alias 시스템 전역 변수 정의 각종 쉘 함수와 alias를 위한 전역 변수들을 정의 ~/.bash_profile 유저 개인의 환경 설정 시스템 전역에 적용되는 환경 설정이 아닌, 유저 개개인의 PATH, 시작 프로그램 등을 추가적으로 설정 가능 ~/.bashrc 유저 개인의 alias 및 변수 설정 /etc/bashrc 파일에서 시스템 전역 변수를 읽음 이 파일에서 유저 자신의 개인적인 명령어 alias, 환경 변수를 설정할 수 있..
[Linux] Symbolic Link Symbolic Link? 링크를 연결하여 원본 파일을 대신해 다른 이름으로 파일을 지정 윈도우의 바로가기 심볼릭 링크 설정은 간단하다 ln -s [원본 파일|디렉토리][연결 할 파일명|디렉토리명] 설정을 하고 확인을 할 수 있다. 화살표 기준 오른쪽에 있는게 원본 파일이고 왼쪽에 있는게 바로가기 파일이다. 디렉토리도 물론 설정이 가능하다. 삭제도 간단하다. rm [바로가기로 설정한 파일|폴더 명]
[Linux] 리눅스 권한 1. 특정 유저에게 특정 command 권한 아래 파일을 통해서 command 권한을 줄 수 있음 vi /etc/sudoers 특정 유저&그룹의 멤버들에게 sudo 권한을 부여 #User privileage specification : sudo 권한을 부여 할 사용자 명 추가 #Allow members of group sudo to execute any command : sudo 권한을 부여 할 그룹 추가 ALL이 아닌 NOPASSWD 로 두고 뒤에 command를 주면 특정 커맨드만 사용이 가능하다 %username ALL={ALL}NOPASSWD:/usr/sbin/useradd 2. 파일, 디렉터리의 소유권과 허가권 2-1. 파일 유형 파일이 어떤 종류인지 나타낸다. 디렉터..
[Linux] 리눅스 계정 리눅스 계정과 권한에 대한 개념이 헷갈려서 정리 리눅스 계정 리눅스 계정은 ID가 아닌 UID로 관리한다. 계정 uid/gid 설명 root 0 시스템 관리자 계정 디바이스 추가/삭제, 계정 생성/삭제, 프로그램 설치 등 system account 1 - 499 애플리케이션들이 사용하는 계정 /sbin/nologin local user 500 - 60000 리눅스 사용자 계정 유저의 홈 디렉토리는 /home/ $ 계정 관리 데이터베이스 파일들 /etc/passwd 로그인 계정 정보 root:x:0:0:root:/root:/bin/bash ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash /etc/group 로그인 그룹 정보 root:x:0:..
[Shell Script] 파일의 변경 시간에 따라 조건 설정하기 https://heywantodo.tistory.com/137 위 포스팅에서 토큰 파일에 내용이 있으면 로그인 명령을 실행하는 스크립트를 구성했는데, 토큰 파일이 만료되면 파일이 사라지는게 아닌 그대로 있고 토큰 코드만 만료되는 것이었다 😱 😱 생각해보면 당연한건데 😢 그래서 토큰 코드는 1시간 주기로 새로 받아야하니, 토큰 파일의 변경시간을 확인하고 1시간 이상 변경이 없다면 로그인을 수행하는 스크립트로 새로 구성했다. 새롭게 구성한 스크립트는 다음과 같다. #!/bin/bash file_path="/path/to/file.txt" # 파일의 변경 시간을 가져옴 file_modified=$(stat -c %Y "$file_path") #..
[Shell Script] 명령어 실패 시 재시도하기 로그인을 성공을 하면 다음 스크립트로 넘어가야하는데, 로그인에 실패를 하는 경우에도 다음 스크립트로 넘어가는 경우가 발생했다. 로그인에 실패를 하는 경우엔 Error가 포함된 메시지가 출력되기 때문에, 아래와 같이 로그인 명령어를 실행했을 때, "Error" 라는 단어가 포함 될 경우 명령어를 재시도하는 코드를 작성했다. while true; do output=$(eval $command_to_run 2>&1) if [[ $output == *"Error"* ]]; then echo "Login failed. Retrying..." echo "Enter Password : " else echo "Login successfully." break fi d..
[Shell Script] 파일 내용 여부에 따라 명령어 실행하기 명령어를 실행할 때, 로그인을 해서 토큰을 받아와야하는 경우나, 매 시간마다 인증을 받아야 하는 경우에 매번 스크립트를 실행할 때마다 인증을 받기는 매우 귀찮다. 그래서 토큰 파일에 내용이 있으면 로그인 명령을 실행하고, 그렇지 않으면 다음 커맨드를 실행하는 스크립트를 생성하기로 결정😉 처음엔 파일의 크기를 이용하는 방식으로 짰음 token_file="~/token_file" if [[ ! -s "$token_file" ]]; then $command_to_run else echo "File exists. Skipping command execution." fi 위 스크립트에서 ! -s 조건은 파일이 존재하고 크기가 0보다 큰지를 확인한다..
[Linux] SSH 설정 변경, 포트 변경 SSH 설정을 변경하려면 먼저 SSH 구성 파일에 액세스를 해야함 대부분의 리눅스 시스템에서 SSH 구성 파일은 '/etc/ssh/sshd_config'에 위치함 'sshd_config' 파일은 SSH 서버의 구성 파일로, OpenSSH 서버에서 사용됨 이 파일을 수정하여 SSH 서버의 동작을 변경하거나, 사용자 인증 및 보안 설정을 조정할 수 있음 1. 설정 변경 SSH 구성 파일을 연다 sudo vi /etc/ssh/sshd_config 주요 옵션은 아래와 같음 옵션 설명 Port SSH 서버가 수신 대기하는 포트 번호 ListenAddress SSH 서버가 바인딩할 IP 주소 PermitRootLogin root 계정으로의 SSH 로그인 허용 여부 Pas..
[Linux] 시스템 로그 로그 커널과 리눅스 시스템이 제공하는 여러 서비스와 응용 프로그램이 발생시키는 메시지 로그를 저장하고 있는 파일이 로그파일, 대부분 /var/log 디렉터리에 위치 로그 파일을 통해 시스템의 상태를 확인 가능 리눅스 시스템 로그 rsyslog 구성 파일 /etc/rsyslog.conf my info 생성 리눅스 저널 로그 journalctl 기존의 syslog 형식에 따라 로그를 저장 저장된 로그에 접근하기 위해 journalctl 명령 사용 ⇒ 바이너리 파일이라 cat으로 읽을 수 없음 저널에서 message 파일을 대체하는 것이 journalctl 명령 재부팅 시 로그가 삭제됨 ⇒ /var/log/journal 디렉토리에 저장하면 영구보존 journalctl #저널 로그 확..
[Linux] 볼륨 파티션, 포맷, 마운트 (2) 저번 포스팅에서 신규 볼륨을 연결 한 후 파티션을 나누는 작업까지 해보았다. 이어서 포맷과, 마운트까지 진행해보자 Let's go~💃 1. 볼륨 생성 및 디스크 파티션 관리 https://heywantodo.tistory.com/89 저번 포스팅 참고! 2. 포맷 포맷이란? 디스크나 파티션에 파일 시스템을 생성하는 작업을 의미함 포맷을 통해 파일 시스템은 디스크 또는 파티션의 논리적인 구조를 설정하고, 데이터를 저장할 수 있는 형식으로 초기화됨 리눅스에서 사용되는 주요 파일 시스템 포맷 파일 시스템 설명 장점 단점 ext4 널리 사용되는 기본 파일 시스템으로 안정성과 성능이 뛰어남 안정성, 성능, 확장성 큰 파일 시스템에는 적합하지 않음 XFS 고성능 파..