"단축키&명령어"의 두 판 사이의 차이

DM wiki
둘러보기로 이동 검색으로 이동
 
(같은 사용자의 중간 판 17개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==실제 사용==
== 실제 사용 ==
* gksu
 
** 그래픽 기반 프로그램을 root 권한으로 실행시 발생하는 여러 문제 예방
* ffmpeg의 활용
* Alt+F2
** 베이스
** 네비게이터 바로가기
*** ffmpeg -i (입력 동영상) (출력 동영상)
* Terminator
** 배속 조절 (2배)
** Ctrl+Shift+T 새 탭 열기
*** -filter:v "setpts=PTS/2"
** Ctrl+Shift+E 수직 분할
** 범위(시작 시각, 길이)
** Ctrl+Shift+O 수평 분할
*** -ss 01:23:45.678 -t 01:23:45.678
** Ctrl+Shift+P 이전 분할
** 인코딩 없이 자르기만 하기
** Ctrl+Shift+N 다음 분할
*** -vcodec copy -acodec copy
** Ctrl+Shift+W 현재 분할 닫기
** 인코딩하기 (qscale은 화질. 숫자가 낮으면 좋다)
* 시스템 성능 옵션 조절
*** -vcodec mpeg4 -acodec libmp3lame -qscale 1
** sudo cpufreq-set -c 0 1 2 3 4 5 6 7 -g performance
* ffmpeg에서 사진 모음을 영상으로 만들기
** sudo cpufreq-set -c 0 1 2 3 4 5 6 7 -g ondemand
** ffmpeg -r 10 -pattern_type glob -i 'bvp_x_y_*.png' -vf fps=60,scale=1280:-2 -pix_fmt yuv420p result.mp4
** sudo cpufreq-set -c 0 1 2 3 4 5 6 7 -g powersave
** r은 초당 몇 개를 보여줄 것인가
** pattern_type glob -i 는 입력 파일 패턴
** fps는 fps
** scale은 1280으로 만들고, 다음이 -1이면 세로 자동 결정, -2면 세로를 짝수로 만들어 줌
*pdf 관련
**잘라내기
***pdfcrop --margin '5 5 5 5' 원본파일.pdf 결과파일.pdf
**페이지 한 개만 따기
***gs -dNOPAUSE -dQUIET -dBATCH -dFirstPage=1 -dLastPage=1 -sDEVICE=pdfwrite -sOutputFile=결과파일.pdf 원본파일.pdf
**압축하기 최고화질
***gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=결과파일.pdf 원본파일.pdf
**압축하기 중간화질 (사진들 개판됨)
***gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=결과파일.pdf 원본파일.pdf
**압축하기 최저화질
***gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/display -dNOPAUSE -dQUIET -dBATCH -sOutputFile=결과파일.pdf 원본파일.pdf
* 우분투 화면 회전
* 우분투 화면 회전
** 쉬운 방법
** 쉬운 방법
23번째 줄: 37번째 줄:
*** xrandr --output HDMI1 --rotate normal
*** xrandr --output HDMI1 --rotate normal
*** xrandr --output HDMI1 --rotate left
*** xrandr --output HDMI1 --rotate left
* 시스템 전력 사용량 조회
** powertop
* 압축 파일 한글 인코딩 깨질때
* 압축 파일 한글 인코딩 깨질때
** unzip -O cp949 xxxx.zip
** unzip -O cp949 xxxx.zip
* 압축하기/압축풀기
** 압축: tar -zcvf data.tar.gz ./data
** 풀기: tar -xvf data.tar.gz ./data
* 압축 멀티 코어로 하기 (-z 플래그가 아닌 아예 다른 압축 프로그램을 쓴다)
** apt install pbzip2
** 압축: tar --use-compress-prog=pbzip2 -cvf  data.tar.bz2 ./data
** 풀기: tar --use-compress-prog=pbzip2 -xvf  data.tar.bz2 ./data
* 무식한 dmesg tail
* 무식한 dmesg tail
** while true;do sudo dmesg -c;done
** while true;do sudo dmesg -c;done
35번째 줄: 54번째 줄:
tail -f access.log.1 | php -R '$len = strlen($argn); $ret = substr($argn, 0, 180); $ret2 = substr($argn, $len-150, $len); echo urldecode($ret)."\n"; echo "==============================$ret2"."\n\n";'
tail -f access.log.1 | php -R '$len = strlen($argn); $ret = substr($argn, 0, 180); $ret2 = substr($argn, $len-150, $len); echo urldecode($ret)."\n"; echo "==============================$ret2"."\n\n";'
</syntaxhighlight>
</syntaxhighlight>
* 키보드 키 반복 입력 안 될 때
* 키보드 키 반복 입력 안 될 때
** xset r on
** xset r on
* 리눅스에서 동영상 자르기
* 마우스 휠 스크롤이 화면 스크롤이 아니라 과거 이력이 나올 때
** 35초 시점부터 30초간의 영상 획득
** tput reset
<syntaxhighlight lang="bash">
 
ffmpeg -ss 00:00:35 -t 00:00:30 -i 입력영상파일 -vcodec copy -acodec copy 출력영상파일
* zsh 기존 명령어 검색
</syntaxhighlight>
** Ctrl+R
** !?검색어?
* zsh: no matches found: ~~ 뜨면서, 정규표현식이 명령어 안에 있는게 실행 안 될 때
** setopt NO_NOMATCH
* gnome shell 이상할 때
** alt+f2 하고 r 엔터
** alt+f2 안먹히면 쉘 열어서 nohup gnome-shell --replace > /dev/null 2>&1 &
** killall -3 gnome-shell 도 된다고 함
*** 이거 하는 순간 gnome-session-failed 나올 것임..
*** gnome-session-failed의 Log out 버튼 누르면 로그아웃됨. 그러나 byobu 세션은 남아있음.
 
* CPU 클럭, 온도
** watch -n.5 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
** watch -n.5 "sensors | grep -i Package"
* 파일 폴더 용량 확인 (크기, 사이즈)
** du
** du -h -d=1 (사람이 읽을 수 있게, 깊이 1까지만 리스트)
** du -h -d=1 -a (사람이 읽을 수 있게, 깊이 1까지만 리스트, 파일까지 정보 표시)
** du -h -d=1 -a (사람이 읽을 수 있게, 깊이 1까지만 리스트, 파일까지 정보 표시)
** du | sort -hr (정렬)
* 그냥 돌리던거 screen에서 돌리기
** 먼저 screen 띄운다
** echo 0 > /proc/sys/kernel/yama/ptrace_scope
** reptyr (대상 프로그램 pid)
*파일 인코딩 일괄 바꾸기
** <syntaxhighlight lang="bash">
find . -type f -iname '*.cpp' -exec sh -c 'iconv -f SHIFT_JIS -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
</syntaxhighlight><br />
 
----
----


===소유권 변경===
=== 소유권 변경 ===
 
* 소유자와 그룹 모두 변경(재귀적으로)
* 소유자와 그룹 모두 변경(재귀적으로)
** chown -R kdm:kdm [폴더]
** chown -R kdm:kdm [폴더]
61번째 줄: 110번째 줄:
chown -R ${user}:${group} ${path}/
chown -R ${user}:${group} ${path}/
</syntaxhighlight>
</syntaxhighlight>
* 그냥 다 777 주기 (현재 폴더와 하위 폴더까지)
* 그냥 다 777 주기 (현재 폴더와 하위 폴더까지)
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
83번째 줄: 133번째 줄:
----
----


===폴더 삭제===
=== 폴더 삭제 ===
 
* 항상 safe-rm 사용하기
* 항상 safe-rm 사용하기
* 정상적인 방법
* 정상적인 방법
95번째 줄: 146번째 줄:
----
----


===하드 복구 관련===
=== 하드 복구 관련 ===


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
103번째 줄: 154번째 줄:
</syntaxhighlight>
</syntaxhighlight>


==세팅용==
== 세팅용 ==
 
* 시작 프로그램 설정
* 시작 프로그램 설정
** gnome-session-properties
** gnome-session-properties
117번째 줄: 169번째 줄:
exo-preferred-applications
exo-preferred-applications
</syntaxhighlight>
</syntaxhighlight>
== ISCSI 관련 ==
=== 딱 접속할 노드만 접속하고, 재부팅해도 접속되는 방법 ===
* 기존 설정 제거
** cd /etc/iscsi  rm -rf /etc/iscsi/nodes/*  rm -rf /etc/iscsi/send_targets/*
* 서비스 중단
** service open-iscsi stop  systemctl stop iscsi.service  systemctl stop iscsid.socket
* 노드 생성 및 자동 접속 설정
** iscsiadm \  --mode node \  --target "iqn.2000-01.com.synology:fs5.docker-test.b59e2281aa" \  --portal [타겟 ip 주소] \  --op new
** iscsiadm \  --mode node \  --target "iqn.2000-01.com.synology:fs5.docker-test.b59e2281aa" \  --portal [타겟 ip 주소] \  --op update \  -n node.startup \  -v automatic
* 서비스 재시작
** systemctl restart iscsi.service
** service open-iscsi status
* 붙었는지 확인하기
** iscsiadm -m session -P 3  | grep -i 'attached scsi'
* 붙은 하드 파티션 만들기
** mkfs.ext4 /dev/[방금 확인한 장치명]
* 부팅시 자동으로 붙게 하기
** mkdir /mnt/docker-test
** vi /etc/fstab
*** /dev/[장치명] /mnt/docker-test ext4 _netdev 0 0
** mount -av
=== 헷갈리는 것 (하면 안 됨) ===
* 디스커버리 하기
** iscsiadm -m discovery -t sendtargets -p [타겟 ip 주소]
** iscsiadm \    --mode discoverydb \    --type sendtargets \    --portal [타겟 ip 주소] \    --op new
* 한 번 discovery 하는게 아니라 계속 반복해서 시도할 것인지
** iscsiadm \    --mode discoverydb \    --type sendtargets \    --portal "192.168.0.16" \    --op update \    -n discovery.sendtargets.use_discoveryd \    -v Yes
* 계속 시도하는거 몇 초에 한 번 씩 할 것인지
** iscsiadm \    --mode discoverydb \    --type sendtargets \    --portal "192.168.0.16" \    --op update \    -n discovery.sendtargets.discoveryd_poll_inval \    -v 30
* 로그인 하기. 근데 이건 한번만 접속하고 재부팅하면 접속 안 하는듯?
** iscsiadm -m node --targetname "iqn.2000-01.com.synology:fs5.docker-test.b59e2281aa -p [타겟 주소] -l
* 이거 하면 모든 discovery 된 node가 다 부팅시 연결됨
** 그리고 discovery 하고 아래 설정을 바꾸면 자동으로 모든 노드를 다시 연결하는게 하니라, 아래 설정 후 discovery 한 항목부터 자동 연결 설정이 적용됨
** 즉, 이미 discovery 된 node나 target은 해당 node나 target 안의 conf 파일 안의 node.startup 등을 바꿔줘야 하는 것
** vi /etc/iscsi/iscsid.conf
*** node.startup = manual 에서 node.startup = automatic 으로
*** node.leading_login = No 에서 node.leading_login = Yes 으로


* [[우분투 창 모니터간 이동]]
* [[우분투 창 모니터간 이동]]

2023년 7월 1일 (토) 09:55 기준 최신판

실제 사용

  • ffmpeg의 활용
    • 베이스
      • ffmpeg -i (입력 동영상) (출력 동영상)
    • 배속 조절 (2배)
      • -filter:v "setpts=PTS/2"
    • 범위(시작 시각, 길이)
      • -ss 01:23:45.678 -t 01:23:45.678
    • 인코딩 없이 자르기만 하기
      • -vcodec copy -acodec copy
    • 인코딩하기 (qscale은 화질. 숫자가 낮으면 좋다)
      • -vcodec mpeg4 -acodec libmp3lame -qscale 1
  • ffmpeg에서 사진 모음을 영상으로 만들기
    • ffmpeg -r 10 -pattern_type glob -i 'bvp_x_y_*.png' -vf fps=60,scale=1280:-2 -pix_fmt yuv420p result.mp4
    • r은 초당 몇 개를 보여줄 것인가
    • pattern_type glob -i 는 입력 파일 패턴
    • fps는 fps
    • scale은 1280으로 만들고, 다음이 -1이면 세로 자동 결정, -2면 세로를 짝수로 만들어 줌
  • pdf 관련
    • 잘라내기
      • pdfcrop --margin '5 5 5 5' 원본파일.pdf 결과파일.pdf
    • 페이지 한 개만 따기
      • gs -dNOPAUSE -dQUIET -dBATCH -dFirstPage=1 -dLastPage=1 -sDEVICE=pdfwrite -sOutputFile=결과파일.pdf 원본파일.pdf
    • 압축하기 최고화질
      • gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=결과파일.pdf 원본파일.pdf
    • 압축하기 중간화질 (사진들 개판됨)
      • gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=결과파일.pdf 원본파일.pdf
    • 압축하기 최저화질
      • gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/display -dNOPAUSE -dQUIET -dBATCH -sOutputFile=결과파일.pdf 원본파일.pdf
  • 우분투 화면 회전
    • 쉬운 방법
      • xrandr -o normal
      • xrandr -o left
    • 화면 선택 회전
      • xrandr -q
      • xrandr --output HDMI1 --rotate normal
      • xrandr --output HDMI1 --rotate left
  • 압축 파일 한글 인코딩 깨질때
    • unzip -O cp949 xxxx.zip
  • 압축하기/압축풀기
    • 압축: tar -zcvf data.tar.gz ./data
    • 풀기: tar -xvf data.tar.gz ./data
  • 압축 멀티 코어로 하기 (-z 플래그가 아닌 아예 다른 압축 프로그램을 쓴다)
    • apt install pbzip2
    • 압축: tar --use-compress-prog=pbzip2 -cvf data.tar.bz2 ./data
    • 풀기: tar --use-compress-prog=pbzip2 -xvf data.tar.bz2 ./data
  • 무식한 dmesg tail
    • while true;do sudo dmesg -c;done
  • 액세스 로그 보기
    • 앞에서부터 180바이트 자르고, %형 유니코드 디코드 후 표현 -> IP 주소 및 요청 API 확인
    • 뒤에서부터 150바이트 표현 -> 접속 디바이스 정보 확인
tail -f access.log.1 | php -R '$len = strlen($argn); $ret = substr($argn, 0, 180); $ret2 = substr($argn, $len-150, $len); echo urldecode($ret)."\n"; echo "==============================$ret2"."\n\n";'
  • 키보드 키 반복 입력 안 될 때
    • xset r on
  • 마우스 휠 스크롤이 화면 스크롤이 아니라 과거 이력이 나올 때
    • tput reset
  • zsh 기존 명령어 검색
    • Ctrl+R
    • !?검색어?
  • zsh: no matches found: ~~ 뜨면서, 정규표현식이 명령어 안에 있는게 실행 안 될 때
    • setopt NO_NOMATCH
  • gnome shell 이상할 때
    • alt+f2 하고 r 엔터
    • alt+f2 안먹히면 쉘 열어서 nohup gnome-shell --replace > /dev/null 2>&1 &
    • killall -3 gnome-shell 도 된다고 함
      • 이거 하는 순간 gnome-session-failed 나올 것임..
      • gnome-session-failed의 Log out 버튼 누르면 로그아웃됨. 그러나 byobu 세션은 남아있음.
  • CPU 클럭, 온도
    • watch -n.5 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
    • watch -n.5 "sensors | grep -i Package"
  • 파일 폴더 용량 확인 (크기, 사이즈)
    • du
    • du -h -d=1 (사람이 읽을 수 있게, 깊이 1까지만 리스트)
    • du -h -d=1 -a (사람이 읽을 수 있게, 깊이 1까지만 리스트, 파일까지 정보 표시)
    • du -h -d=1 -a (사람이 읽을 수 있게, 깊이 1까지만 리스트, 파일까지 정보 표시)
    • du | sort -hr (정렬)
  • 그냥 돌리던거 screen에서 돌리기
    • 먼저 screen 띄운다
    • echo 0 > /proc/sys/kernel/yama/ptrace_scope
    • reptyr (대상 프로그램 pid)
  • 파일 인코딩 일괄 바꾸기
    • find . -type f -iname '*.cpp' -exec sh -c 'iconv -f SHIFT_JIS -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
      


소유권 변경

  • 소유자와 그룹 모두 변경(재귀적으로)
    • chown -R kdm:kdm [폴더]
  • 폴더 파일별 권한 다르게 주고 일괄적으로 소유자까지 바꾸기
#!/bin/bash
path='/home/kdm/'
user='kdm'
group='kdm'

#rw-rw-r--
find ${path}/ -type f -print0 | xargs -0 chmod 0664
#rwxrwxr-x
find ${path}/ -type d -print0 | xargs -0 chmod 0775

chown -R ${user}:${group} ${path}/
  • 그냥 다 777 주기 (현재 폴더와 하위 폴더까지)
find . -type f -exec chmod 777 {} \;
find . -type d -exec chmod 777 {} \;

  • 현재 버전 확인
    • cat /etc/issue
    • lsb_release -a
  • mysql 관련
    • 접속
      • mysql -h localhost -u myname -pmypass mydb
    • sql 로그 보기(위험!)
      • SHOW VARIABLES LIKE "general_log%";
      • SET GLOBAL general_log = 'ON';
      • SET GLOBAL general_log = 'OFF';

폴더 삭제

  • 항상 safe-rm 사용하기
  • 정상적인 방법
    • rm -rf [폴더 이름]
  • 약간 위험한 방법
    • 폴더 안으로 들어가서 rm -rf ./*
  • 절대 금지
    • rm -rf /
    • rm -rf /* preserve도 못 막음!!!!!!!

하드 복구 관련

ddrescue --no-split /dev/hda1 imagefile logfile
ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile
ddrescue --direct --retrim --max-retries=3 /dev/hda1 imagefile logfile

세팅용

  • 시작 프로그램 설정
    • gnome-session-properties
  • 시스템 스왑 사용량 조절 (http://askubuntu.com/questions/103915/how-do-i-configure-swappiness)
    • 확인: cat /proc/sys/vm/swappiness
    • 바꾸기: /etc/sysctl.conf 에 vm.swappiness = 10 수정 또는 추가
    • 이렇게도 바꿀 수 있음: sysctl vm.swappiness=10
    • 재부팅 안하고 스왑 비우기: swapoff -a
    • 다시 스왑 켜기: swapon -a
  • 기본 프로그램 설정은 이렇게
sudo apt-get install exo-utils
exo-preferred-applications

ISCSI 관련

딱 접속할 노드만 접속하고, 재부팅해도 접속되는 방법

  • 기존 설정 제거
    • cd /etc/iscsi rm -rf /etc/iscsi/nodes/* rm -rf /etc/iscsi/send_targets/*
  • 서비스 중단
    • service open-iscsi stop systemctl stop iscsi.service systemctl stop iscsid.socket
  • 노드 생성 및 자동 접속 설정
    • iscsiadm \ --mode node \ --target "iqn.2000-01.com.synology:fs5.docker-test.b59e2281aa" \ --portal [타겟 ip 주소] \ --op new
    • iscsiadm \ --mode node \ --target "iqn.2000-01.com.synology:fs5.docker-test.b59e2281aa" \ --portal [타겟 ip 주소] \ --op update \ -n node.startup \ -v automatic
  • 서비스 재시작
    • systemctl restart iscsi.service
    • service open-iscsi status
  • 붙었는지 확인하기
    • iscsiadm -m session -P 3  | grep -i 'attached scsi'
  • 붙은 하드 파티션 만들기
    • mkfs.ext4 /dev/[방금 확인한 장치명]
  • 부팅시 자동으로 붙게 하기
    • mkdir /mnt/docker-test
    • vi /etc/fstab
      • /dev/[장치명] /mnt/docker-test ext4 _netdev 0 0
    • mount -av

헷갈리는 것 (하면 안 됨)

  • 디스커버리 하기
    • iscsiadm -m discovery -t sendtargets -p [타겟 ip 주소]
    • iscsiadm \   --mode discoverydb \   --type sendtargets \   --portal [타겟 ip 주소] \   --op new
  • 한 번 discovery 하는게 아니라 계속 반복해서 시도할 것인지
    • iscsiadm \   --mode discoverydb \   --type sendtargets \   --portal "192.168.0.16" \   --op update \   -n discovery.sendtargets.use_discoveryd \   -v Yes
  • 계속 시도하는거 몇 초에 한 번 씩 할 것인지
    • iscsiadm \   --mode discoverydb \   --type sendtargets \   --portal "192.168.0.16" \   --op update \   -n discovery.sendtargets.discoveryd_poll_inval \   -v 30
  • 로그인 하기. 근데 이건 한번만 접속하고 재부팅하면 접속 안 하는듯?
    • iscsiadm -m node --targetname "iqn.2000-01.com.synology:fs5.docker-test.b59e2281aa -p [타겟 주소] -l
  • 이거 하면 모든 discovery 된 node가 다 부팅시 연결됨
    • 그리고 discovery 하고 아래 설정을 바꾸면 자동으로 모든 노드를 다시 연결하는게 하니라, 아래 설정 후 discovery 한 항목부터 자동 연결 설정이 적용됨
    • 즉, 이미 discovery 된 node나 target은 해당 node나 target 안의 conf 파일 안의 node.startup 등을 바꿔줘야 하는 것
    • vi /etc/iscsi/iscsid.conf
      • node.startup = manual 에서 node.startup = automatic 으로
      • node.leading_login = No 에서 node.leading_login = Yes 으로