1. 언제쓰이나?


· Service : UI없이 실행될 수 있지만 매우 길지 않아야 한다. 만약 오래걸리는 작업을 Service에서 실행하고자 한다면 Service 안에서 스레드를 사용해야 한다.


· IntentService : 오래걸리지만 메인스레드와 관련이 없는 작업을할 때 주로 이용한다. 만약 메인 스레드와 관련된 작업을 해야 한다면 메인스레드 Handler나 Boradcast intent를 이용해야 한다.




2. 어떻게 실행시키나?


· Service : startService() 메소드에 의해 실행된다.


· IntentService : Intent사용에 의해 실행된다. 새로운 스레드가 생성되며 onHandleIntent()가 불린다.





3. 불리는 위치


· ServiceIntentService 모두 아무 스레드에서 생성되고 , 액티비티 뿐만 아니라 다른곳에서도 실행가능하다.





4. 실행중인 위치


· Service : 백드라운드에서 동작하지만 메인스레드에 포함된다.


· IntentService : 새로운 스레드에서 동작한다.





5. 어떻게 멈추나


· Service : 순전히 사용자의 몫이다. stopSelf()나 stopService()에 의해 동작이 멈춘다. Service Binding의 경우 필요없음.


· IntentService : onHandleIntent() 내의 모든 동작이 수행되면 멈춘다. 멈추기 위한 다른 메소드 호출이 불필요한다.





6. 단점?


· Service : 메인스레드에 포함되므로 무거운 작업일때 메인스레드에 영향을주어 느려지거나 할 수 있다.


· IntentService : 병렬적으로 수행될 수 없으므로 연속적인 Intent 호출에 관해서 순차적으로 처리된다.





 





리눅스에서 crontab은 시간마다 일정한 스크립트를 수행하기 위해 사용되고,


/etc/rec.d/init.d/crond 데몬에의해 관리된다.




1. crontab list 홧인


crontab -l



2. crontab 편집


crontab -e



3. 실행, 중지, 재시작


service crond start(stop|restart)



4. 등록 내용 설정


crontab -e를 통해서 들어온 편집기에 다음과 같은 형태로 저장한다.


# +---------------- 분 (0 - 59)

# |  +------------- 시 (0 - 23)

# |  |  +---------- 일 (1 - 31)

# |  |  |  +------- 월 (1 - 12)

# |  |  |  |  +---- 요일 (0 - 6) (일요일=0 or 7)

# |  |  |  |  |

  *  *  *  *  *  실행될 명령


의 형태로 작성한다.



5. 등록 내용 설정 심화



* * * * * => 매분마다 실행

  

5-59/20 * * * *  => 5분에서 59분 사이 20분간격 실행 -> 5분, 25분, 45분


1-59/2 * * * *  => 매 홀수분마다 실행


5 */2 * * *  => 매일 2시간간격으로 5분에


초단위로 실행은 불가함.



6. crontab 사용 권한


=> /etc/cron.allow : 허용할 사용자 ID 목록
=> /etc/cron.deny  : 거부할 사용자 ID 목록

cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
cron.deny  파일이 있으면 이 파일에 들어있는 ID는 사용 불가



7. 기타


 > /dev/null  2>&1 이란?


예를들어


ls > /dev/null 2>&1 와 같을때 


>는 리다이렉션 기호이다. ls > /dev/null 은 결과값에 대한 표준 출력을 /dev/null로 넣으라는 뜻이고 


2>&1 에서 2> 라는 말은 표준 에러를 리다이렉션 한다는 뜻임. &1 은 /dev/null 을 가리키는 표시이다.


위와 같이 안하고 ls > /dev/null 만 하게 되면 에러가 없는 결과값이 /dev/null 로 출력되어 화면에는 아무런 표시가 되지 않지만, 에러가 발생했을때에는 화면에 표시된다.


뒤에 2>&1 은 에러출력도 &1 (/dev/null )로 출력하라는 뜻으로 결과적으로 명령어에 대한 실행결과에 상관없이 아무것도 표시안하게 된다(성공이든 에러든).









Mysql을 주기적으로 백업하여주는 스크립트. .sh파일로 저장하여 cron으로 돌려놓자. 간단히 설명을 하자면


백업 디렉토리 : /data/backup/temp

계정 : root

비번 : password

백업 db : dbname


각 테이블별로 각각 덤프하고 날짜명으로 압축해서 저장. 3일 지난건 삭제함. 


상황에 맞추어 바꿔 쓰면 된다.





  #!/bin/bash

  backup_dir="/data/backup/temp"

  rm -f $backup_dir/*.sql

  table_list=`mysql -uroot -ppassword dbname-e "show tables" | tail     -n+2`;

      for table_name in $table_list; do

          mysqldump -uroot -ppassword dbname$table_name > $backup_di    r/$table_name.sql

          done

  tar cvfpz /data/backup/mysql_backup_$(date +%Y%m%d).tar.gz $backup_dir/

  find /data/backup -ctime +3 -exec rm -f {} \;




'Server' 카테고리의 다른 글

[Linux/Centos] 버전 확인 및 비트 확인  (0) 2016.11.10
[Linux/Centos] 용량 확인  (0) 2016.11.10
[Linux/Centos] Crontab 사용법 정리  (0) 2016.11.10
[Linux] 파일 검색 find grep  (0) 2016.11.10
[Linux/Centos] Path 설정하기  (0) 2016.09.03

안녕하세요.


리눅스에서 파일 검색을 하기 위한 명령어 find를 소개합니다.


명령어 : find 파일 찾을 위치 지정 -name 찾을 파일 이름

    ex) # find ./ -name aaa.txt


위에 ex를 설명해드리면 ./(현재 폴더 부터, 하위 폴더 포함) aaa.txt 파일을 찾습니다.




다음으로 파일 내부 문자열을 검색하는 명령어 grep 입니다.


사실 grep은 여러군데서 사용하고 있는 것이기 때문에, 파일 내부 문자열 검색만을 위해서 쓰이고 있지는 않습니다.


grep의 man을 보시면 -print lines matching a pattern 으로 나와있어요.


이번 포스팅에서는 grep을 통해서 파일 내부의 문자열을 검색해서, 찾고자 하는 문자열과 동일한 문자열을 가진


파일을 찾아주는 것으로 


명령어 : grep -r "찾을 문자열" ./*

     ex) # grep -r "aaa" ./*

        

위의 ex를 설명드리면 ./(현재 폴더 아래 모든 파일에서) aaa라는 문자열이 있는지 찾습니다. -r 옵션은 하위디렉토리 모두 검색.

# install openjdk

sudo apt-get install openjdk-7-jdk


# download android sdk

wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz


tar -xvf android-sdk_r24.2-linux.tgz

cd android-sdk-linux/tools


# install all sdk packages

./android update sdk --no-ui


# set path

vi ~/.zshrc << EOT


export PATH=${PATH}:$HOME/sdk/android-sdk-linux/platform-tools:$HOME/sdk/android-sdk-linux/tools:$HOME/sdk/android-sdk-linux/build-tools/22.0.1/


EOT


source ~/.zshrc


# adb

sudo apt-get install libc6:i386 libstdc++6:i386

# aapt

sudo apt-get install zlib1g:i386


1. 정규식을 통한 제거


1
$text = preg_replace('/\r\n|\r|\n/','',$text); 
cs




2. 문자열 함수사용으로 제거


1
$text = str_replace(array("\r\n","\r","\n"),'',$text); 
cs

또는


1
$text = strtr($text,array("\r\n"=>'',"\r"=>'',"\n"=>''));
cs



$PATH 를 잡아 명령어를 인식키도록 해보자.



[root@localhost ~]# echo $PATH
/usr/local/sbin:/bin:/usr/sbin:/usr/bin

[root@localhost ~]# PATH=$PATH:~/.composer/vender/bin

[root@localhost ~]# echo $PATH

/usr/local/sbin:/bin:/usr/sbin:/usr/bin:/root/.composer/vender/bin


+ Recent posts