CentOS 7에서 scl 레포지토리를 이용해서 gcc 8 을 설치하는 방법입니다.

 

1. SCL 리포지토리 설치


먼저, centos-release-scl 패키지를 설치하여 SCL 리포지토리를 활성화합니다.

sudo yum install centos-release-scl

 

기본 미러사이트에서 CentOS 7은 더 이상 지원하지 않아서 CentOS Vault Mirror 로 연결 하도록 수정해 주어야 합니다.

 

/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo 를 열어서 [centos-sclo-rh] 부분을 아래와 같이 수정합니다.

[centos-sclo-rh]                                                             
name=CentOS-7 - SCLo rh                                                        
baseurl=http://vault.centos.org/centos/7/sclo/$basearch/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=1    
enabled=1            
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

 

/etc/yum.repos.d/CentOS-SCLo-scl.repo 를 열어서 [centos-sclo-sclo] 부분을 아래와 같이 수정합니다.

[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://vault.centos.org/centos/7/sclo/$basearch/sclo/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

 

 

2. GCC 8 설치

SCL 리포지토리에서 GCC 8을 제공하므로, devtoolset-8 패키지를 설치합니다.

sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++

 

반응형

3. GCC 8 활성화

GCC 8을 활성화하려면, scl 명령을 사용하여 devtoolset-8을 활성화해야 합니다. 활성화 후에 GCC 8을 사용할 수 있습니다.

scl enable devtoolset-8 bash


위 명령을 실행하면 현재 터미널 세션에서 GCC 8이 활성화됩니다.

gcc --version 명령으로 GCC 버전 8을 확인할 수 있습니다.

gcc --version
gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)

 

4. 시스템 재부팅 시에도 GCC 8을 사용하려면

터미널을 열 때마다 scl enable 명령을 매번 입력하기 번거로울 수 있습니다.

이를 자동화하려면 ~/.bashrc 파일에 아래와 같이 추가하여 매번 터미널을 시작할 때 GCC 8을 활성화할 수 있습니다.

echo 'source scl_source enable devtoolset-8' >> ~/.bashrc
source ~/.bashrc
728x90
반응형

 

dwebp 이용

1. dwebp 설치
Ubuntu/Debian 계열:

sudo apt update
sudo apt install webp


CentOS/RHEL 계열:

sudo yum install libwebp-tools


2. 변환 명령어 실행

dwebp input.webp -o output.jpg

 

 

convert (ImageMagick 사용)

1. ImageMagick 설치
Ubuntu/Debian 계열:

sudo apt update
sudo apt install imagemagick


CentOS/RHEL 계열:

sudo yum install imagemagick


2. 변환 명령어 실행

convert input.webp output.jpg

 

 

ffmpeg 사용

1. ffmpeg 설치
Ubuntu/Debian 계열:

sudo apt update
sudo apt install ffmpeg


CentOS/RHEL 계열:

sudo yum install ffmpeg


* ffmpeg static build 다운로드 방법은 https://ls-al.tistory.com/134 를 참고하세요.

 2. 변환 명령어 실행

ffmpeg -i input.webp output.jpg

 

728x90
반응형

 

 

FFmpeg은 동영상, 음성 파일을 다룰때 유용한 오픈소스 소프트웨어입니다.

스테레오 오디오 파일의 좌우 오디오를 스왑해 보겠습니다.

 

https://www.aoakley.com/articles/2018-08-24-stereo-test.php 이 사이트에서

stereo-test.mp3 (200k, 17 seconds, medium quality)

 

이 파일을 테스트로 사용했습니다.

 

Side Left, Side Right 소리를 들어보면 Side Left는 왼쪽에서 소리가 나고, Side Right는 오른쪽에서 소리가 나는 것을 알 수 있습니다.

 

이제 좌우 채널을 스왑해 보겠습니다.

 

ffmpeg -i stereo-test.mp3 -map_channel 0.0.1 -map_channel 0.0.0 -c:v copy -c:a libmp3lame  swapped_stereo-test-mp3lame.mp3

 

swapped_stereo-test-mp3lame.mp3 파일을 재생해 보면 좌우 채널이 바뀐 것을 알 수 있습니다.

 

옵션에 대한 설명입니다.

 

1. -map_channel 옵션: 오디오 채널을 매핑하는 데 사용됩니다.

    • 0.0.1: 입력 파일(0번째 파일)의 0번 스트림(오디오)에서 오른쪽 채널을 선택.

    • 0.0.0: 입력 파일(0번째 파일)의 0번 스트림( 오디오) 에서 왼쪽 채널을 선택.

    • 이 순서를 바꾸어 좌우 채널을 교체합니다.

2. -c:v copy 옵션: 비디오 스트림은 인코딩하지 않고 원본을 그대로 복사합니다.

3. -c:a libmp3lame 옵션: 오디오를 MP3 로 재인코딩합니다. 채널을 바꾸려면 반드시 재인코딩을 해주어야 합니다.  -c:a copy를 하면 채널이 바뀌지 않습니다.

 

 

pan 필터를 이용하면 볼륨조정과 모노 채널로 변경하는 것도 가능합니다.

 

아래 명령은 좌우 채널을 바꾸고 오디오 볼륨을 80% 줄입니다.

ffmpeg -i stereo-test.mp3 -af "pan=stereo|c0=0.8*c1|c1=0.8*c0" swapped-reduced-volume.mp3

 

아래 명령은 모노 채널로 변경합니다.

ffmpeg -i stereo-test.mp3 -af "pan=mono|c0=c0+c1" mono-audio.mp3

 

728x90
반응형

 

 

일단위로 검색

-mtime: 파일의 내용이 수정된 시간을 기준으로 검색.
-atime: 파일의 접근 시간을 기준으로 검색.
-ctime: 파일의 속성 변경 시간을 기준으로 검색.

 

1. N일 이상 지난 파일 찾기

find /path/to/directory -mtime +N

 

• /path/to/directory: 검색할 디렉토리 경로.
• +N: N일 초과된 파일을 찾음.
• 예: find /home/user -mtime +30 → 30일 이상 지난 파일.


2. N일 내의 파일 찾기

find /path/to/directory -mtime -N


• -N: N일 이내의 파일을 찾음.
• 예: find /home/user -mtime -7 → 7일 이내에 수정된 파일.


3. 정확히 N일 전의 파일 찾기

find /path/to/directory -mtime N


• N: 정확히 N일 전에 수정된 파일.
• 예: find /home/user -mtime 10 → 정확히 10일 전에 수정된 파일.

 

 

시간 단위로 검색 (-mmin, -amin, -cmin)

1. N분 이상 지난 파일 찾기

find /path/to/directory -mmin +N


• -mmin: 수정 기준.
• 예: find /var/log -mmin +60 → 수정된 지 60분 이상 지난 파일.

 

 

복합 조건으로 검색

1. 7일 이상 30일 미만 수정된 파일 찾기

find /path/to/directory -mtime +7 -mtime -30


2. 확장자와 함께 사용

find /path/to/directory -mtime +7 -name "*.log"


• 7일 이상 지난 .log 파일 찾기.


3. 파일만 찾기

find /path/to/directory -type f -mtime +7 -name "*.log"

 

작업과 결합 (-exec 옵션)

7일 이상 지난 파일을 찾고 삭제

find /path/to/directory -mtime +7 -exec rm -f {} \;

 

728x90
반응형

 

https://vault.centos.org/

 

Index of /

 

vault.centos.org

 

 

http://centos.mirror.cdnetworks.com/

 

Index of /

 

centos.mirror.cdnetworks.com

 

 

http://ftp.iij.ad.jp/pub/linux/centos-vault/centos/

 

Index of /pub/linux/centos-vault/centos

 

ftp.iij.ad.jp

 

728x90
반응형

 

txt 확장자에 대해서 gzip 압축을 사용하는 설정 방법입니다.

 

location 블록에서 설정하기

http {
    gzip off;

    server {
        listen 443;

        # .txt 확장자에 대해서 압축사용
        location ~* \.txt$ {
            gzip on;
            gzip_vary on;
            gzip_types text/plain;
        }
    }
}

 

 

mime.types 을 이용해서 http 블록에서 설정하기

http {
	# mime type 들이 지정되어 있음
    include /etc/nginx/mime.types;

    # gzip 설정
    gzip on;
    gzip_vary on;
    # gzip을 적용할 MIME 타입들을 지정. 여러 타입을 지정할 수 있음.
    gzip_types text/plain;

    server {
        listen 443;
        
        ....
    }
}

 

 

728x90
반응형

TLS cipher suite 를 검색해 볼수 있고, 관련된 취약점을 알아 볼 수 있습니다.

 

예를 들어 TLS_RSA_WITH_AES_128_CBC_SHA 를 검색해보면, 아래와 같이 취약점이 나옵니다.

 

가능한한 취약점이 없는 Cipher suite를 사용해야 겠습니다.

 

728x90
반응형

 

두개이상의 랜카드를 사용할 때, 기본 게이트웨이를 변경하는 방법입니다.

route 명령을 실행하면, 아래와 같이 현재 라우팅 테이블이 보입니다.

 

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth2
172.30.1.0      0.0.0.0         255.255.255.0   U     1      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth2

 

eth1, eth2 두개의 네트워크 장치가 보입니다.

eth2가 기본 장치이고 192.168.1.1이 기본 게이트웨이로 설정되어 있습니다.

 

eth1을 기본 장치로 설정하도록 하겠습니다.

루트 권한으로 아래 명령을 차례로 실행해 주면 됩니다. 172.30.1.1은 eth1의 게이트웨이 IP 주소입니다.

 

route del default
route add default gw 172.30.1.1 eth1

 

다시 route 명령을 실행해보면 아래와 같이 변경된 것을 볼 수 있습니다.

 

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.30.1.1      0.0.0.0         UG    0      0        0 eth1
172.30.1.0      *               255.255.255.0   U     1      0        0 eth1
192.168.1.0     *               255.255.255.0   U     1      0        0 eth2

 

traceroute 명령을 실행해보면, 아래와 같이 eth1 의 게이트웨이(172.30.1.1)를 통하는 것을 알 수 있습니다.

 

$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  172.30.1.1 (172.30.1.1)  1.556 ms  1.562 ms  0.918 ms
.....

 

이상 기본 게이트웨이 변경 방법 이었습니다.

728x90
반응형

and

두개 이상의 패턴을 and 조건으로 검색합니다.

cat debug.log | grep 'MainActivity' | grep 'DEBUG'

debug.log에서 MainActivity와 DEBUG  모두를 포함한 줄만 출력해줍니다.

or

 주어진 패턴중 하나라도 포함하고 있으면 검색합니다.

cat debug.log | grep -e 'test 1' -e 'test 2'
cat debug.log | grep -E 'test 1|test 2'

debug.log 에서 test 1 혹은 test 2를 포함한 줄을 출력해줍니다.

not

주어진 패턴을 포함하고 있지 않은 줄을 검색합니다.

cat debug.log | grep -v 'test 3'

debug.log 에서 test 3를 포함하고 있지 않은 줄을 출력합니다.

 

 

추가로 대소문자 구분을 하지 않는 방법입니다.
옵션으로 -i 를 주면 패턴에서 대소문자 구분을 하지 않습니다.

cat debug.log | grep -i 'test'

 

debug.log 에서 test, Test, TEST, TEst  와 같이 대소문자 구분없이 test를 포함한 경우 출력합니다.

728x90
반응형

 

콘솔 명령으로 네트워크 연결 속도를 확인 하는 방법입니다.

 

알고 싶은 장치 이름을 eth1이라고 할때, sysfs와 ethtool 명령을 이용해서 간단하게 알아낼 수 있습니다.

 

cat  /sys/class/net/eth1/speed

1000 와 같이 속도를 알려줍니다. 단위는 Mbps 입니다.

 

ethtool eth1

아래와 같이 eth1에 대한 정보가 나옵니다.

Speed 항목에 속도가 나옵니다.

 

Settings for eth1:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full 
                        100baseT/Half 100baseT/Full 
                        1000baseT/Full 
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full 
                        100baseT/Half 100baseT/Full 
                        1000baseT/Full 
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
       drv probe link
Link detected: yes

728x90
반응형

https://github.com/jamiemcg/remarkable

 

GitHub - jamiemcg/Remarkable: Remarkable - The Markdown Editor for Linux http://remarkableapp.github.io

Remarkable - The Markdown Editor for Linux http://remarkableapp.github.io - GitHub - jamiemcg/Remarkable: Remarkable - The Markdown Editor for Linux http://remarkableapp.github.io

github.com

 

remarkable_1.87_all.deb
0.07MB

 

728x90
반응형

https://www.johnvansickle.com/ffmpeg/

 

John Van Sickle - FFmpeg Static Builds

Welcome! Here you'll find the latest versions of FFmpeg for Linux kernels 3.2.0 and up. For installation instructions please read the FAQ. Note: it's highly recommended to use git master builds, because bug fixes and other improvements are added daily. All

www.johnvansickle.com

ffmpeg 최신 버전의 static 빌드를 제공합니다.

 

 

 

윈도우용의 경우 https://www.gyan.dev/ffmpeg/builds/ 에서 받으면 됩니다.

release builds 에서 -full 로 표시된 파일을 받으면 됩니다.

728x90
반응형

 

1. 이미지 변환

이미지 품질 변환

$ convert source.jpg -quality 90 target.png

 

이미지 크기 변환

$ convert source.jpg -resize 1280x720 target.png

 

이미지 크롭

$ convert source.jpg -crop 220x160+850+460 target.jpg

source.jpg의 (x,y) 좌표 (850,460) 에서 부터 가로 220, 세로 160 크기 만큼만 크롭

 

2. 이미지에서 메타데이터 삭제

사진에 포함된 촬영 장소나 시간등등 정보를 삭제할 때 사용

 

$ mogrify -strip source.JPG

$ jhead -purejpg source.JPG      # JPEG 이미지만 가능

 

3. Exif 정보 보기

$ exiftool IMG_0047.JPG

728x90
반응형

 

scp, rsync를 할때 connect 타임아웃을 주는 방법입니다.

서버가 응답을 하지 않을 때, 지정 시간 후에 종료하게 됩니다.

 

scp

# scp -o ConnectTimeout=10 ....

 

-o 을 주고 ssh 에서 사용되는 옵션들을 사용할 수 있습니다.
아래와 같은 옵션들이 있습니다. 그 중에서 ConnectTimeout 를 사용했습니다.

 

더보기

                   AddressFamily
                   BatchMode
                   BindAddress
                   CanonicalDomains
                   CanonicalizeFallbackLocal
                   CanonicalizeHostname
                   CanonicalizeMaxDots
                   CanonicalizePermittedCNAMEs
                   ChallengeResponseAuthentication
                   CheckHostIP
                   Cipher
                   Ciphers
                   Compression
                   CompressionLevel
                   ConnectionAttempts
                   ConnectTimeout
                   ControlMaster
                   ControlPath
                   ControlPersist
                   GlobalKnownHostsFile
                   GSSAPIAuthentication
                   GSSAPIDelegateCredentials
                   HashKnownHosts
                   Host
                   HostbasedAuthentication
                   HostKeyAlgorithms
                   HostKeyAlias
                   HostName
                   IdentityFile
                   IdentitiesOnly
                   IPQoS
                   KbdInteractiveAuthentication
                   KbdInteractiveDevices
                   KexAlgorithms
                   LogLevel
                   MACs
                   NoHostAuthenticationForLocalhost
                   NumberOfPasswordPrompts
                   PasswordAuthentication
                   PKCS11Provider
                   Port
                   PreferredAuthentications
                   Protocol
                   ProxyCommand
                   PubkeyAuthentication
                   RekeyLimit
                   RhostsRSAAuthentication
                   RSAAuthentication
                   SendEnv
                   ServerAliveInterval
                   ServerAliveCountMax
                   StrictHostKeyChecking
                   TCPKeepAlive
                   UsePrivilegedPort
                   User
                   UserKnownHostsFile
                   VerifyHostKeyDNS

 

rsync

# rsync -avzP -e 'ssh -o ConnectTimeout=10'  ....

 

rsync 도 ssh 옵션을 사용해서 타임아웃을 주었습니다.

 

728x90
반응형

리눅스에서 복구가 어렵도록 안전하게 파일을 삭제하는 방법입니다.

scrub, shred 와 wipe 프로그램을 이용하면 됩니다.

 

1. scrub

scrub 파일이름
scrub -r 파일이름  # scrub 후에 파일을 삭제
scrub /dev/sdf1  # 파티션 전체에 대해서 scrub
scrub -X 디렉토리 # 디렉토리를 생성하고 파티션이 가득찰 때 까지 파일을 채운다. 빈 공간에 대해서 쓰레기 데이터를 채울때 사용

 

2. shred

shred 파일이름
shred -u 파일이름    # 덮어쓰기 후, 파일을 삭제
shred /dev/sdf1
shred -v /dev/sdf1 # 진행상황표시
shred -v --random-source=/dev/urandom -n1 /dev/sdf1 # /dev/sdf1 파티션에 랜덤 데이터를 씀

 

3. wipe

wipe 파일이름
wipe -r 디렉토리

 

 

 

* 참고사이트

https://wiki.archlinux.org/title/Securely_wipe_disk#shred
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-removing_data_securely_using_scrub

728x90
반응형

+ Recent posts