사소한 내용들이라 하나의 기사로 만들기는 어려운 리눅스 관련 팁들을 모아두는 곳입니다.
Download speedup
소스포지에서 큰 파일을 다운로드할 때, 속도가 너무 나오지 않을 수 있습니다. 이때, axel을 이용할 수 있습니다. 웹에서 다운로드할 파일의 주소를 얻고, axel 뒤에 Ctrl+Shaft+v를 눌러서 붙여 넣을 수 있습니다.
호스트 IP 주소 출력하기
- hostname -I | awk '{ print $1 }'
- ip -o route get 8.8.8.8 | grep -oP '(?<=src )\S+'
일반적인 설정
어떤 프로그램이 올바르게 동작하지 않을 때, 보통 설정에서 해당 부분을 바꿈으로써 대체로 해결되는 경우가 많습니다. 요즘의 리눅스는 과거와 달리, GUI 인터페이스를 대부분 갖고 있지만, 모든 설정을 GUI에서 가능한 것은 아닙니다. 어떤 프로그램의 GUI 설정에서 문제를 발생시키는 부분을 고치는 항목이 없으면, 설정이 저장되는 파일을 찾아서 수정해야 합니다.
전역 설정이 필요한, 즉, 루트 사용자의 권한이 필요한 설정들은 /etc/ 아래에 대부분 놓이고, 이런 프로그램은 시스템 전반에 걸치는 것들이라서 대체로 잘 알려져 있습니다.
반면에, 개인 사용자의 권한으로 실행되는 프로그램의 설정은 /home/$USER 아래에 숨긴 파일로 저장되는 경우가 많습니다. 예를 들어, vim의 관련 파일은 /home/$USER/.vim, /home/$USER/.viminfo, /home/$USER/.vimrc이 있고, .vimrc 파일에 설정이 저장됩니다.
그외, 많은 프로그램들이 /home/$USER/.config 디렉토리에 저장되고, /home/$USER/.local/share 등에서도 관련 파일들을 찾을 수 있습니다.
만약, 자주 다루지 않는 프로그램은 정확한 설정을 알기가 어렵기 때문에, 오동작하는 프로그램의 설정 파일을 제거할 필요가 있습니다. 예를 들어, smtube에서 어느 날 검색이 되지 않으면, /home/$USER/.config/smtube 를 제거해서 실행해 볼 필요가 있습니다.
그룹에 사용자 추가
그룹에 사용자 추가는 /etc/group에서 해당 그룹을 찾아서 사용자 id를 추가하거나, usermod 명령을 통해 이루어집니다. 그러나, 다시 로그인을 해야 적용되므로, 다음과 같이 처리함으로써, 로그 아웃없이 적용이 가능합니다:
- su user_id
명령어 히스토리 삭제
어떤 경우에 터미널에 입력하지 말아야 할 내용, 예를 들어 암호가 (잘못된) 명령어로 입력되어 히스토리에 저장될 수 있습니다. 명령어 전체 히스토리를 삭제해 줄 수 있습니다.
- history -c
시스템 청소
고아된 패키지를 찾아서 제거합니다.
- sudo deborphan | xargs sudo apt-get remove --purge -y
zip 파일 한글깨짐
윈도우에서 생성된 zip파일을 풀면 한글이 깨질 때에는 아래와 같이 옵션을 주어야 합니다.
- zip -O cp949 filename.zip
매번 이렇게 명령할 수 없기 때문에, 모든 사용자에게 적용하려면, /etc/profile에 설정합니다.
export UNZIP="-O cp949"
export ZIPINFO="-O cp949"
Root 권한이 없을 때에는 ~/.profile 파일에 기록합니다.
마우스 커서 테마
방법1
이 방법을 사용하시면 시스템 판올림시에 심각한 오류를 만날 수도 있습니다. 추천하지 않습니다. |
절대 경로에 있는 /etc/alternatives/x-cursor-theme에 /usr/share/icons 아래에 있는 cursor 이름을 적어주면 됩니다. 보통 디렉토리 이름이 cursor 테마명입니다. 확인은 /usr/share/icons/DMZ-Black/cursor.theme 등에서 할 수 있습니다.
데스크탑 환경으로 진입하고 나면 각 데스크탑 환경에서 마우스 cursor 테마를 새롭게 지정할 수 있습니다.
방법2
위의 방법보다는 개별 사용자마다 다르게 처리하는 것이 바람직해 보입니다. 자신의 홈디렉토리 아래에 다음 디렉토리를 만듭니다:
- mkdir .icons
이 디렉토리에 커서 테마를 넣습니다. Gnome을 참조하십시오.
한국어와 한국어(101/104키)의 차이점
데비안 설치 시에 키보드 설정에 보면 두 가지 키보드 레이아웃이 있습니다. 한국어와 한국어 101/104키이며, 한국어 101/104키로 지정하면 기본설정이 되어 설치가 됩니다.
- 오른쪽 Alt : 한/영 키로 지정됩니다.
- 오른쪽 Ctrl : 한자 키로 지정됩니다.
그래서, 입력기 설치 후에 그냥 오른쪽 Alt, 오른쪽 Ctrl를 눌러보면 한/영 전환, 한자 변환이 각각 이루어집니다.
만약 키보드에 한/영키나, 한자키가 별도로 없는 경우에는 한국어 101/104키를 사용하는 것이 일반적으로 좋습니다.
스플래쉬 화면 제거
컴퓨터 시작할 때와 끝날 때 스플래쉬 화면으로 커널 동작을 가려버립니다. 깔끔해서 보기 좋은 경우도 있지만, 시스템에 문제가 생겼다고 생각했을 때, 커널 메시지를 볼 필요도 있습니다. /etc/default/grub을 수정합니다.
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rcu_nocbs=0-15"
# quiet splash를 제거하면 스플래쉬 화면을 없앨 수 있습니다.
GRUB_CMDLINE_LINUX=""
그럽 설정을 바꾸었기 때문에 다음 명령을 실행해 주어야 합니다:
- sudo update-grub
Command tip
foo로 시작하면서 중간에 3개의 글자가 있고, .jpg로 끝나는 파일을 찾아서 foo다음에 00을 삽입하는 방법입니다.
- rename 's/foo/foo00/g' foo???.jpg
ani로 끝나는 파일을 jpg로 바꾸기
- ls | grep '.ani' | cut -d . -f 1 | while read line; do mv $line.ani $line.jpg; done
- for f in *.ani; do mv -- "$f" "${f%.ani}.jpg"; done
- find -type f -name '*.ani' -exec sh -c 'f="{}"; mv -- $f "${f%.ani}.jpg"' \;
- rename ani jpg *
확장자 없는 파일을 jpg로 바꾸기
- find -type f ! -name '*.*' -exec sh -c 'f="{}"; mv -- $f "$f.jpg"' \;
위의 확장자 변경 명령이 잘 작동하지 않을 때에는 아래의 파일명 중간의 공백을 아래줄로 바꾸는 과정을 먼저 거친 후에 진행해 보십시오
clockspeed 패키지에 포함되어 있는 명령어입니다. 뒤의 ip가 기억나지 않아서 적어 둡니다.
- ntpclockset 203.248.240.103
아이콘 이미지 합치기
- 256x256 아이콘에 작은 아이콘을 삽입할 때 180으로 하는 것이 좋다.
mkv를 avi로 변환하기
- mencoder -mc 0 -noskip -skiplimit 1 source.mkv -o target.avi autoaspect -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=3000:vpass=1 -ffourcc XVID -oac mp3lame -lameopts abr:br=96 -vf scale harddup
특정 디렉토리 내에 있는 모든 파일에서 해당 문자열 찾기
- find . -name "*.*" | xargs grep "특정문자"
해당 경로 이후 모든 하위 디렉토리를 755(rwxr-xr-x)로 변경합니다.
- sudo find . -type d -exec chmod -R 755 {} \;
해당 경로 이후 모든 하위 파일을 644(rw-r--r--)로 변경합니다.
- sudo find . -type f -exec chmod 644 {} \;
특정 문자열을 포함한 해당 줄을 삭제하기
- find . -type f -name "*.txt" -exec vi -c "%g/찾을문자열/d" -c "wq" "{}" \;
- perl -pi -e "s/.*찾을문자열.*//s" *.txt
현재 디렉토리의 파일과 디렉토리에서 공백을 밑줄로 바꾸는 방법
- for i in *' '*; do mv "$i" `echo $i | sed -e 's/ /_/g'`; done
- for f in *; do mv "$f" `echo $f | tr ' ' '_'`; done
- for file in *; do mv "$file" ${file// /_}; done
- ls | awk '{printf("\"%s\"\n", $0)}' | sed 'p; s/\ /_/g' | xargs -n2 mv
시계 위젯
화면 크기가 크다 보니 시계를 확인하는 것이 쉽지 않습니다. 그래서 크기가 좀 큰 시계를 화면에 표시해 주는 위젯을 찾고 있었습니다.
이 문서에 몇 가지 시계가 소개되고 있습니다.
마음에 드는 것이 up-clock이며, 다음과 같이 설치할 수 있습니다.
- sudo add-apt-repository ppa:apandada1/up-clock
- sudo apt install up-clock
이를 실행시키면 다음과 같은 오류가 생깁니다.
- up-clock
Traceback (most recent call last):
File "/usr/bin/up-clock", line 47, in <module>
import up_clock
File "/usr/lib/python2.7/dist-packages/up_clock/__init__.py", line 22, in <module>
from gi.repository import Gtk # pylint: disable=E0611
ImportError: No module named gi.repository
이 문제에 대한 해결책은 이 문서에서 발견할 수 있습니다.
다음 패키지를 설치해 줍니다.
- sudo apt install python-gobject
Input/Output scheduler
single-queue schedulers
- NOOP
- CFQ
- DEADLINE
multi-queue scheduler
- None, no queuing algorithm is applied.
- mq-deadline is the adaptation of the deadline scheduler to multi-threading.
- Kyber
- BFQ
Changing io scheduler
먼저 /etc/default/grub을 수정합니다.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rcu_nocbs=0-15 scsi_mod.use_blk_mq=1"
GRUB_CMDLINE_LINUX="iommu=1 amd_iommu=on kvm_amd.npt=1 rd.driver.pre=vfio-pci"
- sudo update-grub
실제로 스케쥴러를 바꾸기 위해서는 /etc/udev/rules.d/61-scheduler.rules을 수정합니다.
# set deadline scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="kyber"
ACTION=="add|change", KERNEL=="nvme[0-9][a-z][0-9]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="kyber"
그리고 sdd중에 sda 등으로 인식되는 것은 스케쥴러를 임의의 것을 선택할 수 있지만, nvme는 multi-queue만 바뀌어 집니다. |
자세한 내용은 아치리눅스 문서와 데비안 문서를 참조하십시오.
벤치마크 결과1과 벤치마크 결과2를 보면, 특수한 상황에서 BFQ가 아주 안 좋은 상황이 생기거나 아주 좋은 상황이 생깁니다. Kyber와 None은 엇비슷해서 굳이 스케쥴러를 변경해야 하는지 의문이 듭니다.
마운트 옵션을 /etc/fstab에서 수정하는 것이 좋다고 합니다. 이 내용은 위의 데비안 문서를 참고했습니다.
# / was on /dev/nvme0n1p2 during installation
/dev/name0n1p2 / ext4 noatime,commit=600,errors=remount-ro 0 1
# disk
/dev/sda1 /home/user_id/MyWork ext4 defaults,noatime 0 2
Cursor theme
리눅스에서 사용할 수 있는 마우스 커스 테마는 많이 있습니다. 그중에서 리눅스를 상징하는 펭귄으로 만들어진 tuxcursor가 많이 이용되어 왔습니다. 만일을 대비해서 이 서버에 보관해 둡니다: File:Tuxcursor02.tar.gz
자료를 받아서 다음 디렉토리에 풀어 줍니다:
- cd ~
- mkdir .icons
- tar zxvf tuxcursor.tar.gz
- tar zxvf tuxshadow.tar.gz
이 후에는 그놈 설정에서 tuxcursor를 선택할 수 있습니다.
Python
이 문서에 따라, 파이션 버전을 선택적으로 바꾸도록 설정할 수 있습니다.
- sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
- sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode
- sudo update-alternatives --config python
Terminator terminal
화면 크기에 맞는 적당한 크기의 터미널 크기를 정하는 것이 필요할 수도 있습니다. 그놈 터미널은 preferences에 쉽게 메뉴를 찾을 수 있지만, 터미네이터 터미널은 preferences에서 쉽게 찾기가 힘듭니다. 아래 파일의 size변수에서 정할 수 있습니다. 세 자리 변수이자만, 앞이 행, 뒤가 열이며, 줄로 볼 때에는 마지막 숫자를 지우고 생각하시면 됩니다. ~/.config/terminator/config에서 수정합니다.
[global_config]
[keybindings]
[layouts]
[[default]]
[[[child1]]]
parent = window0
type = Terminal
profile = default
[[[window0]]]
parent = ""
type = Window
profile = None
size = 800, 480
[plugins]
[profiles]
[[default]]
cursor_color = "#aaaaaa"
show_titlebar = False
use_theme_colors = True
scrollbar_position = hidden
visible_bell = True
scrollback_lines = 1000000
copy_on_selection = True
Troubleshootings
Budgie desktop을 설치한 후에 제거했더니, 터미널을 실행할 때마다 bash: /etc/profile.d/vte.sh: No such file or directory라는 오류가 생깁니다.
시스템에는 vte-2.91.sh가 설치되어 있었기 때문에 심볼릭 링크를 만들어 줍니다.
- cd /etc/profile.d
- sudo ln -sf vte-2.91.sh vte.sh