코딩하는 문과생

[리눅스] 생활코딩, 실행 본문

개발 관련 지식/리눅스

[리눅스] 생활코딩, 실행

코딩하는 문과생 2019. 12. 19. 21:18

[백그라운드 실행]

멀티태스킹: 여러 개의 일을 하나의 화면에서 한다.

$ nano
# <html>
# </html>

# ctr + O(저장), hello.html
# ctr + z : 실행 중인 프로그램을 Background로 보낸다. 
# 이 기능을 실행하면 명령어가 일시정지된다.

$ jobs
# 현재 백그라운드 작업하고 있는 프로그램 출력
$ fg
# foreground로 (+)부분을 불러온다. 

$ vim
# vim에디터 실행 
# ctr + z : 실행 중인 프로그램을 Background로 보낸다. 
# 이 기능을 실행하면 명령어가 일시정지된다.

$ jobs
# 현재 백그라운드 작업하고 있는 프로그램 출력
$ fg %2
# 두번째 프로그램을 foreground로 불러온다.

$ kill -9 %4
# 프로그램 종료

# 백그라운드에서 프로그램 실행
$ ls -alR / > result.txt 2> error.log 
# Recursive하게 '/' 아래 목록 결과를 result.txt와 error.log에 저장

$ ls -alR / > result.txt 2> error.log & 
# Recursive하게 '/' 아래 목록 결과를 result.txt와 error.log에 저장
# 그러나 백그라운드에서 돌아간다.

[항상실행: daemon, service]

daemon: 항상 실행하고 있는 프로그램

  • 냉장고: 언제 사용할 지 모르기에 항상 켜져있다. ex. Web Server
  • TV: 필요할 때 켠다. ex. ls, rm, mkdir

우리는 만들어져있는 프로그램을 설치해보고, 그 daemon을 켜고 꺼볼것이다. 

$ sudo apt-get install apache2
# 아파치 웹서버 설치
$ cd /etc/init.d/
# daemon의 목적을 가진 프로그램이 설치되는 경로
$ ls

$ sudo service apache2 start
# daemon 프로그램 시작
$ ps aux | grep apache2

$ sudo service apache2 stop
$ ps aux | grep apache2


# ***참고*** 
# 자동으로 실행되어야 할때 
$ cd ..
# /etc
$ cd rc3.d
$ ls -l
# S02apache2(link), 바로가기 느낌
# S: 부팅시 자동실행 02: 우선순위
$ ./S02apache2
# 해당 명령어를 이용해 아파치를 실행할 수 있다.

 

[정기적으로 실행]

CRON: 정기적으로 명령어를 실행시켜주는 도구

ex. 정기적으로 백업, 정기적으로 데이터를 전송, 정기적으로 인터넷을 통해 시간 조정

$ crontab -e
# 하고자 하는 일을 정의할 수 있다.

# 1/* * * * *
# 1분에 한번
# ctr + Z(백그라운드 기능)

$ date > date.log
$ cat date.log
$ date >> date.log

$ fg
# 1/* * * * * date >> date.log
# ctr + x

$ crontab -l
$ cd ~
$ ls
$ tail -f date.log
# -f: 데이터가 추가되면 알아서 refresh된다.

$ crontab -e 
# */1 * * * * date >> date.log 2>&1
# 2>&1: 표준에러를 표준 출력화

사례

[쉘을 시작할 때 실행: Startup script]

$ alias l='ls -al'
# 'l'이라 입력하면 ls -al 명령 실행

$ alias ..='cd ..'
# 부모로 가능 명령

$ alias c='clear'

# 우리는 쉘을 실행할 때부터 사용하고 싶다.
# 쉘을 시작할 때 몇 가지 파일을 실행시킨다.
# bash는 시작할 때 .bashrc파일을 실행시킨다.
$ cd ~
$ nano .bashrc
# bash를 실행할 때 먼저 보는 파일 : startup script

# echo 'Hi, bash' 추가
$ bash
# Hi, bash