Linux 상에서 다른 서버의 파일을 복사해 오고자 하는 경우

scp 명령어를 활용할 수 있다.


scp 명령어는 cp와 문법이 비슷하다.

$ scp <user_id>@<ip_addess_of_source>:/<file> <user_id>@<ip_address_of_dest>:/<file_name>

scp 명령어를 사용하는 서버로(부터) 옮기고자 하는 경우에는 <user_id>@<ip_address>:를 생략 할 수 있다.


scp 명령어를 사용할 때 password를 포함하게 하는 방법

$ sshpass -p '<PASSWORD>' scp <user_id>@<ip_addess_of_source>:/<file> <user_id>@<ip_address_of_dest>:/<file_name>

※ 이렇게 사용하면 PASSWORD가 드러날 수 있으니 보안에 취약하다는 점을 유념하자.

'Programming > Linux' 카테고리의 다른 글

Memtester  (0) 2018.07.15
Ctags  (0) 2018.07.03
Systemd Service  (0) 2018.05.04
Linux tar, gz, bz2  (0) 2018.04.25
Linux HDD mount  (0) 2018.04.06

Linux에서 백그라운드로 자동으로 실행하게끔 service를 등록할 수 있다.

현재 등록된 service 목록은 /etc/systemd/system 경로에 *.service 파일을 보면 확인 할 수 있다.


systemd는 Linux의 init system 중 하나로,

init system을 사용하는 가장 기본적인 이유는 Linux system 이 부팅 된 다음 User영역의 Component를 initialize 하기 위함이다.

또한 백그라운드에서 동작하는 daemon이나 서비스를 관리하기 위함이다.

간단하게, /etc/init.d 경로에 있는 script 등은 System V init, /etc/systemd/system 경로에 있는 *.service는 systemd 라고 생각하면 된다.


가장 간단하게 systemd를 추가하는 방법은 아래와 같은 파일을 /etc/systemd/system 경로에 추가 하면 된다.

파일 이름은 <service_name>.service

[Unit]

Description=<Description of your own service>

After=network.target


[Service]

ExecStart=<File would be executed with this service>


[Install]

WantedBy=multi-user.target

Description: 해당 service에 대한 설명으로, systemctl status로 확인 할 때 가장 첫 줄에 표현된다.

ExecStart: 실행할 파일의 절대경로

※위의 ExecStart 로 표기된 파일은 ./<file> & 와 비슷한 방식으로 구동되기 때문에, 실행되는 파일의 첫 줄에 해당 파일을 실행할 shell을 나타내는 shebang(#!)을 포함해줘야 한다.


<service_name.service 파일을 추가 한 후에는,

$ sudo systemctl daemon-reload

를 통해 새로운 모듈을 load 하고,

시작, 정지, 상태 확인은 아래와 같은 명령어로 할 수 있다.

$ sudo systemctl start <service_name>

$ sudo systemctl stop <service_name>

$ sudo systemctl restart <service_name>

$ sudo systemctl status <service_name>

부팅 시 자동으로 실행되게 하기 위해서는 아래와 같이 enable 하면 된다.

$ sudo systemctl enable <service_name>

$ sudo systemctl disable <service_name>


참조: https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units



'Programming > Linux' 카테고리의 다른 글

Ctags  (0) 2018.07.03
scp  (0) 2018.05.29
Linux tar, gz, bz2  (0) 2018.04.25
Linux HDD mount  (0) 2018.04.06
HandBrakeCLI  (0) 2018.04.06

Linux 압축 하기/압축 풀기


Tape Archive

tar은 Tape Archive 의 약자로, 옛날부터 Tape 드라이브를 백업하기 위해 사용했다고 한다. tarball 이라고 불리기도 한다고 한다.

tar은 압축을 옵션으로 줄 수 있는데, gzip 으로 압축을 하면 tar.gz 파일이, bzip2로 압축하면 tar.bz2 가 생성된다.

tar command의 (사실은 상당히 많은 옵션을 가지고 있지만) 기본적인 옵션은 아래와 같다.

c : Create a new .tar file

v : Verbosely show the pregress

f : File name

x : Extract

t : List content

z : for gzip

j : for bzip2


간단 사용예

tar 압축 하기

$ tar -cvf <output_file_name>.tar <input_folder>

tar 압축 풀기

$ tar -xvf <input_file_name>.tar 

tar.gz 압축 하기

$ tar -zcvf <output_file_name>.tar.gz <input_folder>

tar.gz 압축 풀기

$ tar -zxvf <input_file_name>.tar.gz 

tar.bz2 압축 하기

$ tar -jcvf <output_file_name>.tar.bz2 <input_folder>

tar.bz2 압축 풀기

$ tar -jxvf <input_file_name>.tar.bz2 


보다 자세한 내용은, https://www.tecmint.com/18-tar-command-examples-in-linux/ 참조

'Programming > Linux' 카테고리의 다른 글

scp  (0) 2018.05.29
Systemd Service  (0) 2018.05.04
Linux HDD mount  (0) 2018.04.06
HandBrakeCLI  (0) 2018.04.06
Linux sed  (0) 2018.02.05

리눅스에서 새 하드디스크를 마운트 하고 자 하는 경우


우선 fdisk 를 통해 새 하드디스크의 device number?(sda | sdb | sdc ...)를 확인해야한다.

$ sudo fdisk -l


확인한 device number(예시 sdc)를 가지고 fdisk 를 통해 파티션을 설정한다.

$ sudo fdisk /dev/sdX

Command (m for help): n

Partition type

p    primary (0 primary, 0 extended, 4 free)

e    extended (container for logical partitions)

Select (default p): 

Partition number (1-4, default 1):

First sector (2048-41943039, default 2048):

Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):


Created a new partition 1 of type 'Linux' and of size 20 GiB.


Command (m for help): w

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.


파티션 설정이 끝나면, 포멧을 해야한다.

일반적으로 리눅스에서는 ext4 포멧을 사용한다.

$ sudo mkfs.ext4 /dev/sdc


이제 하드디스크가 준비가 완료 된 것이다.

다음은, 해당 하드디스크를 디렉토리 어딘가에 마운트 해야한다.

$ sudo mkdir /mnt

$ sudo mount /dev/sdc /mnt


그러나, 위와 같은 방법으로 마운트를 하면 매번 컴퓨터를 켤 때 마다 새로 마운트를 해줘야 한다.

컴퓨터가 부팅 될 때 자동으로 마운트는 /etc/fstab을 참조하여 하는데,

/etc/fstab에 해당 HDD를 추가하면 된다.

fstab에 HDD 정보를 UUID를 바탕으로 적어주기 때문에 이를 위해서는 우선, HDD의 UUID를 확인해아 한다.

$ sudo blkid

UUID를 확인하여 클립보드로 복사해 둔후

vi editor로 etc/fstab을 수정한다.

$ sudo vi /etc/fstab

fstab에 추가하는 형식은 아래와 같다.

<file system> <mount point> <type> <options> <dump> <pass>

UUID=5aa86733-92d5-4060-9086-d026d9409e7b /mnt ext4

이때, options, dump, pass는 입력하지 않아도 기본적으로 동작하는데는 문제없다.


'Programming > Linux' 카테고리의 다른 글

Systemd Service  (0) 2018.05.04
Linux tar, gz, bz2  (0) 2018.04.25
HandBrakeCLI  (0) 2018.04.06
Linux sed  (0) 2018.02.05
Linux find  (0) 2018.02.04

Linux에서 동영상 인코더로 많이 사용하는 HandBrake

Command Line 명령어로 HandBrake를 사용하기


옵션이 많아 따지기 귀찮으면

간단하게 preset을 사용하면 된다.

$ HandBrakeCLI --input <input_file> --output <output_file> --preset 'Devices/Apple 540p30 Surround'


preset list는

$ HandBrakeCLI --preset-list

로 확인하자


위의 Apple preset이 너무 느려서... 내가 사용하는 옵션은

$ HandBrakeCLI --input <input_file> --output <output_file> --encoder x264 --encoder-preset ultrafast  --rate 30 --width 640 --height 360


자세한 옵션은 help 옵션으로 확인하자.

$ HandBrakeCLI --help


'Programming > Linux' 카테고리의 다른 글

Linux tar, gz, bz2  (0) 2018.04.25
Linux HDD mount  (0) 2018.04.06
Linux sed  (0) 2018.02.05
Linux find  (0) 2018.02.04
Ubuntu sources.list generation  (0) 2017.09.06

Linux 사용시 파일 내부의 특정 표현을 수정하고자 하는 경우 sed 명령어를 활용할 수 있다.


sed 의 기본적인 형태는 아래와 같다.

sed <options> <address> <commands> <filename>

<options>

-n : suppress automatic printing (sed는 Matching 되는 Line 외에도 모든 Line 을 기본적으로 printing 하는데, line number 를 출력하고자 하는 경우(command =) 또는, Matching 되는 line 만 출력하고자 하는 경우(command /p)에는 -n option을 활용하면 된다.)

<address>

number : Match only the line number

/regular_expression/ : Match lines matching the regular_expression

addr1,addr2 : Match lines from addr1 to addr 2

addr,+N : Match addr and the following N lines

addr,~N : Match lines from addr to N*addr

<commands>

= : print the line number

/p : print the line

s/regular_expression/replacement : replace 


다만, 순전히 내 기준에서 가장 많이 사용하는 sed의 형태는 아래와 같다.

sed s/<regular_expression>/<replace>/g <file>

여기서 /g는 vim에서 replace 할 때의 /g 와 마찬가지로, 여러 개가 매칭 되는 경우 여러번 실행하도록 하는 옵션


sed 는 <file> 로 부터 <regular_expression> 을 찾아 <replace> 로 치환하여, 표준 출력을 해준다.

이는 vim 에서 replace 하는 것과 비슷하다.

결과물이 표준 출력 되기 때문에, 아래와 같이 > 또는 >> 를 이용해 파일에 써줄 수 있다.

다만, 여기서 파일이 이름이 같은 경우 아무것도 써지지 않는다는 점을 유의하자.

sed s/<regular_expression/<replace>/g <input_file> > <output_file>


아래는 예시

sed s/^$//g test.txt > test.txt.tmp

mv test.txt.tmp test.txt

(test.txt 파일로 부터 공백인 행을 없애 test.txt.tmp 파일에 출력한다.)


'Programming > Linux' 카테고리의 다른 글

Linux HDD mount  (0) 2018.04.06
HandBrakeCLI  (0) 2018.04.06
Linux find  (0) 2018.02.04
Ubuntu sources.list generation  (0) 2017.09.06
Ubuntu Redshift  (0) 2017.07.02

Linux system 에서 파일을 찾고자 할 떄,

find 함수를 사용하면 찾을 수 있다.


기본적인 사용법은 아래와 같다.

$ find <directory> -name <finding_file_name>


옵션으로 아래와 같이 사용 할 수 있다.

-type f : 파일

-type d : 폴더(directory)

-maxdepth 1 : find 는 기본적으로 하위 디렉토리까지 전부 검사 한다. maxdepth는 하위 몇 디렉토리 까지 검사할 것인지를 설정한다.

-and : 여러개의 조건에 대해 찾고자 할때 -and 옵션과 함께 조건을 추가할 수 있다.

-and ! : 해당 조건이 거짓인 경우에 대해 찾고자 할 때, -and ! 을 사용하면 된다.

-iname : 파일 이름의 대소문자를 고려하지 않고 검색한다.


아래는 예시

$ find . -type f -name 'abc*' -and ! -name 'abc'

(현재 디렉토리로 부터 abc로 시작하는 이름을 가진 파일 중에 파일 이름이 abc는 아닌 것을 찾는다.


xargs와 함께 사용하면, 

디렉토리에서 원하는 파일을 복사/삭제 하기 수월하다

예시

$ find . -type f -name 'abc*' -and ! -name 'abc' | xargs rm -f

(현재 디렉토리로 부터 abc로 시작하는 이름을 가진 파일 중에 파일 이름이 abc는 아닌 것을 찾아 삭제한다.

'Programming > Linux' 카테고리의 다른 글

HandBrakeCLI  (0) 2018.04.06
Linux sed  (0) 2018.02.05
Ubuntu sources.list generation  (0) 2017.09.06
Ubuntu Redshift  (0) 2017.07.02
Linux timezone  (0) 2017.06.20

Ubuntu 를 사용 할 때, 

각 종 프로그램을 다운 받거나 설치하기 위한 apt의 repository 를 어떻게 해야하나 고민이 된다.


잘은 모르겠지만, 복잡한 것은 싫을 때 사용할 만한 sources.list generation 사이트를 소개한다.

https://repogen.simplylinux.ch/

위 링크에 접속하면, 나라 / Ubuntu release / Ubuntu Bransches / Ubuntu Updates 등만 설정하면 그에 알맞는 sources.list 파일을 생성해 준다.

그 외에 널리 사용되는 PPA 도 추가 할 수 있다.


비교적 최신(아마도, 현재 Ubuntu에서 공식적으로 지원하는 release 만) 선택 할 수 있는 듯 하지만,

손쉽게 sources.list 를 생성 할 수 있어 편리하다.


위 링크에서 처음 제대로 알게된 Main / Restricted / Universe / Multiverse 의 차이

Main : Ubuntu 공식 supported Software

Restricted : supported Software 이지만, 완전 free license는 아님

Universe : 널리 사용되지만, 공식 supoort는 아님

Multiverse : free가 아님


Security : 중요 security update

Updates: : recommended update

Proposed : pre-relased update

Backports : unsupported update


Main + Universe + Security 만 선택해 generate 해도 별 문제 없이 사용할 듯 하다.


생성된 sources.list 는 나라를 South Korea 로 선택시

kr.archive.ubuntu.com 으로 생성 되지만,

보다 빠른 ftp.daumkakao.com 으로 변경하여 사용하면 더 빠르게 다운 받을 수 있다.


Vi 기준

:%s/kr.archive.ubuntu.com/ftp.daumkakao.com/g


'Programming > Linux' 카테고리의 다른 글

HandBrakeCLI  (0) 2018.04.06
Linux sed  (0) 2018.02.05
Linux find  (0) 2018.02.04
Ubuntu Redshift  (0) 2017.07.02
Linux timezone  (0) 2017.06.20

시력 보호를 위해 모니터의 색온도를 조절하여 사용하는 사람들이 많이 있다.

Windows 에서는 Flux 라는 프로그램을 사용하는데,

Ubuntu 에도 Flux 가 있지만, 원하는 동작을 제대로 해주지 않는다.


Flux 대신 Redshift 를 사용하면

보다 편하게 화면의 색온도를 설정할 수 있다.

Redshift 는 Ubuntu 12.04 버전 이후로 사용할 수 있다.


설치 방법

sudo apt-get install redshift-gtk

※Debian: sudo apt-get install redshift


Redshift 를 설치 후 아래의 명령어로 색온도를 설정 할 수 있다.

$ redshift -o <temperature>


다른 많은 옵션도 있지만, 버그가 있는지 잘 안되는 명령어도 있는 듯하다. 다양한 옵션을 man 으로 확인 할 수 있다.

그냥 단순히 색온도를 설정해서 사용하기엔 편리하다.

 


'Programming > Linux' 카테고리의 다른 글

HandBrakeCLI  (0) 2018.04.06
Linux sed  (0) 2018.02.05
Linux find  (0) 2018.02.04
Ubuntu sources.list generation  (0) 2017.09.06
Linux timezone  (0) 2017.06.20

Linux Time zone 변경 하는 방법


우선 date 명령어로 시스템의 시간을 확인하자

$ date

끝에 KST로 나와야 한국 시간


/etc/localtime 파일을 해당 타임존의 파일로 교체해 주면 된다. (binary 파일이라 열어도 알아볼 수는 없다.)

$ mv /etc/localtime /etc/localtime.bak

$ ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime


'Programming > Linux' 카테고리의 다른 글

HandBrakeCLI  (0) 2018.04.06
Linux sed  (0) 2018.02.05
Linux find  (0) 2018.02.04
Ubuntu sources.list generation  (0) 2017.09.06
Ubuntu Redshift  (0) 2017.07.02

+ Recent posts