IRCμ λν μ¬λ¬ λ³΄κ³ μμ # 350μ λν μ견, κ·Έλ¦¬κ³ μ΄μ λ©μΌ λ§λ¦¬μ€νΈ μ€λ λ .
μμ§ λͺ νν μμΈμ μμΌλ©° μ¬λ¬ λ²λ³΄κ³ λμμ§λ§ μ§μμ μΈ λ¬Έμ μ΄κ±°λ μ΄μ λν΄ ν¨μ¬ λ λ§μ΄ λ£κ² λ κ²μ΄λΌκ³ λ μκ°νμ§ μμ΅λλ€. μ§κΈκΉμ§ λ§€μ° μ νλ ν μ€νΈλ₯Ό ν΅ν΄ λ¬Έμ λ₯Ό 30-50 % μ λ μ¬ν ν μ μμ§λ§ μ¬ν κ°λ₯ν©λλ€.
μ¦μμ λ¨μν λ°λͺ¬μ μμνκ³ μ¦μ λ°ννλ init μ€νμΌ μ€ν¬λ¦½νΈκ° OKλ₯Ό λ°ννκ³ 0μ μ½λλ₯Ό λ°ννκ³ stdoutμ "μ±κ³΅"μν λ©μμ§λ₯Ό μΆλ ₯νμ§λ§ μ€μ λ‘ ν΄λΉ λ°λͺ¬μ μ€ν μ νμ§λ μλλ€λ κ²μ λλ€.
λ΄ κ°μΈ ν μ€νΈλ Ubuntu 10.04 (Lucid) VMκ³Ό μ¬κ³ Apache2 ν¨ν€μ§μ init μ€ν¬λ¦½νΈλ₯Ό λμμΌλ‘νλ μ΅μ λ§μ€ν°λ₯Ό ν΅ν΄ μνλμμ΅λλ€.
Jeff Forcier ( bitprophet )κ° 2011-07-23 μ€ν 7μ 25 λΆ EDT μ μ²μ μ μΆνμ΅λλ€.
Jeff Forcier ( bitprophet )λ λ€μκ³Ό κ°μ΄ κ²μνμ΅λλ€.
ν
μ€νΈμ€μΈ init μ€ν¬λ¦½νΈλ₯Ό κ³μΈ‘νμΌλ©° λͺ¨λ κ²μ΄ λμΌν λ°©μμΌλ‘ μ€νλλ κ² κ°μ΅λλ€ (μ¦, μ€μ μ±κ³΅ λλ κ°μ§ μ±κ³΅ μλ리μ€). μ΄λ λ¬Έμ κ° μ€ν¬λ¦½νΈ μμ²΄κ° λ§λλ apachectl
νΈμΆ λ΄μ μμμ μλ―Έν©λλ€.
μμΈμ΄ μ°λ¦¬μͺ½μ 무μμΈμ§ μκ°νκΈ° μμνμ΅λλ€.
ssh -t <hostname> <command>
λ₯Ό μ¬μ©νμ¬ λ¬Έμ κ° μ¬νλλμ§ νμΈνλ κ²μ
λλ€.2011-07-23 07:45 pm EDT
Jeff Forcier ( bitprophet )λ λ€μκ³Ό κ°μ΄ κ²μνμ΅λλ€.
apache2ctl
μ체λ Apache mpm-worker μ€μΉ μμΉμμλ μ€μ λ°μ΄λ리 μ€ν νμΌμ λν μ¬λ³Όλ¦ λ§ν¬ μΈ /usr/sbin/apache2
νΈμΆνλ λ¨μν λνΌ Bash μ€ν¬λ¦½νΈμ
λλ€. νΉν μΌλ°μ μΈ start
μ¬μ©μμλ /usr/sbin/apache2 -k start
νΈμΆν©λλ€. μ΄μ κ³Ό λ§μ°¬κ°μ§λ‘ apache2ctl
λ re : return value λλ μ΄λ€ μΉμ
μ΄ μ€νλλμ§ λ κ°μ§ μλ리μ€μμ λ€λ₯΄κ² μλνμ§ μλ κ² κ°μ΅λλ€.
/usr/sbin/apache2
μ λ¬Έμλ (μνμΉ μ¬μ΄νΈμμλ) μλμ μΌλ‘ μ νμ μ΄λ©°, apachectlμ μ¬μ©νμ¬ env varsλ₯Ό μ€μ ν΄μΌνλ€λ κ²λ§ λͺ
μν©λλ€ (μ νν©λλ€- apache2
μ€ν μ체λ§μΌλ‘λ κ½€ ꡬμ λ¨). λΆλͺ
ν κ·Έ λ³μκ° μ€μ λμ§ μμλ€λ μ€λ₯κ° μμ΅λλ€.)
apache2ctl
μ apache2
νΈμΆ μ§μ μ env
μ μΆλ ₯μ κ²μ¬νλ©΄ μ¬μ©μ, κ·Έλ£Ή, pidfile μμΉ λ° μΈμ΄μ κ°μ λͺ κ°μ§ νλͺ© λ§ μμ±λ©λλ€. μ΄λ μ±κ³΅κ³Ό μ€ν¨ μν© μ¬μ΄μμ λ³κ²½λμ§ μμ΅λλ€. λλ λνΌμ λ€μν μμ± λ° νκ²½ λ³μ μ€μ μ λλλ‘ λ³κ²½λλ 무μΈκ°κ° μκΈ°λ₯Ό λ°λΌκ³ μμμ§λ§ μλμ.
μ§κΈκΉμ§λ μ μ©νμ§ μμ΅λλ€. μμ μμ΄λμ΄ (pty, ssh)λ₯Ό ν μ€νΈνμ¬ λ³κ²½ μ¬νμ νμΈνμμμ€.
2011-07-23 08:46 pm EDT
Jeff Forcier ( bitprophet )λ λ€μκ³Ό κ°μ΄ κ²μνμ΅λλ€.
pty=False
μ μ¬μ©νλ©΄ ν¨μ¬ λ μ μλνλ κ² κ°μ΅λλ€ (# 350μ Maxμ μ€λͺ
μμ μ μ μλ―μ΄). κΈ°λ³Έ True μ€μ μ μ¬μ©νλ©΄ λλ΅ 5/10 ν, λλ‘λ λͺ λ² μ λ μ€ν¨κ° λ°μνμ΅λλ€. Falseλ₯Ό μ¬μ©νλ©΄ μ€ν¨μμ΄ μ½ 15 λ² μ°μ μ€ννμ΅λλ€. ν΅κ³νμλ μλμ§λ§ κ·Έκ²μ λμκ² κ½€ μ’μ κ² κ°μ΅λλ€.
ssh
λ₯Ό μλμΌλ‘ μ€ννλ©΄ λΉμ·ν κ²°κ³Όκ° μμ±λ©λλ€. ssh -t <host> sudo /etc/init.d/apache2 start
λ μ½ 50 %μ μκ° λμ Apacheλ₯Ό μλμΌλ‘ μμνμ§ λͺ»ν©λλ€. -T
(pty μμ)κ³Ό λμΌνλ©° 100 % μμλ©λλ€.
κ·Έλμ μ΄κ²μ Fabricμ μλͺ»μ΄ μλλλ€. SSH μ€νμΌ pseudo-ttyκ° μλ ν λ μ΄λ¬ν init μ€ν¬λ¦½νΈκ° μ€μλνλ λ κΉμ κ³³μ λλ€.
νΈκΈ°μ¬μ μν΄ μ‘°κΈ λ κΉμ΄ νν€μ³ λ³΄κ² μ΅λλ€. κ·Έλ¬λ μ¬κΈ°μ "ν΄κ²°μ±
"μ΄μ΄ λ¬Έμ κ° λ°μνμ λ pty=False
λ₯Ό μ¬μ©νλΌλ μλ‘μ΄ FAQ μΈ κ²μ²λΌ 보μ
λλ€.
2011-07-23 08:59 pm EDT
Jeff Forcier ( bitprophet )λ λ€μκ³Ό κ°μ΄ κ²μνμ΅λλ€.
λ€, λΆννλμ΄ νλμ μ€λͺ νλ κ²μ μ°Ύμ§ λͺ»νμ΅λλ€. μμ κ²°κ³Όλ₯Ό κ°μν λ FAQκ° νμ€ν κ° κΈΈμ΄λΌκ³ μκ°ν©λλ€.
2011-07-23 μ€ν 10:35 EDT
Hugo Garza (hiro2k) κ²μ :
μ΄μ λ°©κΈμ΄ λ¬Έμ λ₯Ό λ§λ¬λλ°,μ΄ λ²κ·Έλ₯Ό 보μ μΌλ©΄ μ’κ² μ΅λλ€. λ€ννλ pty = False μ€μ μ μλνλλ° μ μλνμ΅λλ€. μ€λͺ ν΄μ£Όμ μ κ°μ¬ν©λλ€. μ μ΄λ μ§λ¬Ό κ²°ν¨μ΄ μλλλ€. μ΄μ μ μ΄κ²μ΄ μ€ν¨νλμ§ κΆκΈν΄ν©λλ€.
2011-08-02 μ 01:27 pm EDT
μ΄κ²μ΄ λ¨μ§ bash μ€ν¬λ¦½νΈ λ¬Έμ κ° μλλΌκ³ νμ ν©λκΉ? λ΄ λ©μΌ λ§λ¦¬μ€νΈ μ€λ λλ₯Ό μλ―Έν©λλ€. Javaμ weblogicμ μμν bash μ€ν¬λ¦½νΈ μΌλΏμ λλ€.
FWIW, EC2μμ νμ νλ κ±°μ λͺ¨λ Ubuntu μ»΄ν¨ν°μμμ΄ λμ°ν λμμ΄ λ°μν©λλ€.
λΆλ¦¬ λ νλ©΄ screen -d -m someBackgroundTask
ν΅ν΄ μμλ μμ
μΌλ‘λ μ¬ν κ°λ₯ν©λλ€.
μΌλ°μ μΌλ‘ pty=False
κ° λ¬Έμ λ₯Ό ν΄κ²°νλ€κ³ μΈκΈν΄μΌνμ§λ§ κ·Έλ μ§ μμ κ²½μ°λ₯Ό λ³Έ μ μ΄ μμ΅λλ€.
@yuvadm -pty = Falseλ‘ λ¬Έμ κ° ν΄κ²°λμ§ μλ κ²½μ°μλ μΌλ° ssh λͺ λ Ή (μμμ μΈκΈ νλλ‘)μ μ¬μ©νμ¬ λ¬Έμ λ₯Ό μ¬ν ν μ μμ΅λκΉ? λ΄κ° λ³Έ κ²μ Fabric λ¬Έμ κ° μλλΌ SSH λ¬Έμ μ΄μ§λ§ μΌμΉνμ§ μλ μν©μ΄ μλμ§ μλ κ²μ΄ μ’μ΅λλ€.
νμΈν΄μΌ ν ν₯λ―Έλ‘μ΄ κ°λμ λλ€. μ΄μ λν΄ λ€μ μ°λ½ λλ¦¬κ² μ΅λλ€.
μ΄ λ¬Έμ λ₯Ό μ¬ννμ΅λλ€. ν΄λΌμ΄μΈνΈλ Ubuntu 10.04.3 LTSμ΄κ³ μλ²λ "Ubuntu 8.04.4 LTS (μλ²)"μ
λλ€.
SSH ν΄λΌμ΄μΈνΈλ "OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 2009 λ
3 μ 25 μΌ"μ΄κ³ , ssh μλ²λ "OpenSSH_4.7p1 Debian-8ubuntu1, OpenSSL 0.9.8g 2007 λ
10 μ 19 μΌ"μ
λλ€. ν¨λΈλ¦μ "1.3.3 μ΅μ’
"μ
λλ€.
λ¬Έμ λ pty = True μΈ κ²½μ° 100 %μ΄κ³ pty = False μΈ κ²½μ° μ¬λΌμ§λλ€.
λ€λ₯Έ μλ²μ μ°κ²°νλ©΄ pty = True μΌ λ λ¬Έμ κ° νμμλ κ²μ μλλλ€.
μ κ²½μ°μλ ν μ€νΈλ₯Ό μν΄ "nohup sleep 100> / tmp / xxx 2> & 1"μ΄λΌλ λ§€μ° κ°λ¨ν λͺ λ Ήμ μ€νν©λλ€.
λλ μ΄κ²μ λ¬Ό λ ΈμΌλ©° EC2μμλ§ λ³΄μμ΅λλ€ (λ΄ Linodeμμλ λ³΄μ§ λͺ»νμ§λ§ 100 % νμ νμ§λ μμ΅λλ€). pty = Falseλ₯Ό μ€μ νλ©΄ ν΄κ²°λλ κ² κ°μ΅λλ€.
μ΄ λ¬Έμ μ μ§λ©΄νμ΅λλ€.
sudoλ‘ λͺ
λ Ήμ μ€ννκΈ° λλ¬Έμ tty = Falseλ₯Ό μ¬μ©ν μμλ μν©μ΄ λ°μνμ΅λλ€.
>& /dev/null < /dev/null &
μΆκ°λ μ μ€νλμ§λ§ νλ‘μΈμ€κ° μμλμ§ μμμ΅λλ€.
λͺ
λ Ή μ€ν μ€ λ€μμ μ μ λͺ¨λλ₯Ό μΆκ°νλ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€ : nohup java -jar text.jar & sleep 5; exit 0
κ°μ¬ν©λλ€ spodgruskiy,
κ·νμ νμ΄ μ μκ² ν¨κ³Όμ μ
λλ€.
λλ λ€μ λͺ
λ Ήμ μ¬μ©νμ¬ fab tp start strom ν΄λ¬μ€ν°λ₯Ό μμ±νλ €κ³ μλνμ΅λλ€.
κ·Έλ¬λ κ·Έλ€ μ€ μ΄λ κ²λ μλνμ§ μμκ³ νκ΄μ μ ν μμλμ§ μμμ΅λλ€. λ¬΄μ¨ μΌμ΄ μμλμ§ μ΄ν΄κ° μ λΌμ.
μ΄μ¨λ κ³ λ§μ.
μλ©΄ νΈλ¦ +1
requirettyκ°μλ μμ€ν μμ μμ νλ λ° νμ
sudo ( 'start service; sleep .5') λͺ¨λ κ²μ΄ μλ©λλ€!
'sudo ()'λ₯Ό μ¬μ©νκ³ μ격 μμ€ν
μ sudo μ‘μΈμ€λ₯Ό μν΄ RequireTtyκ° νμ±ν λ κ²½μ° 'set -m; μλΉμ€
bash μΈν°λν°λΈ λ λΉ μΈν°λν°λΈμ λν μμΈν μ€λͺ κ³Ό μ΄κ²μ΄ μμ μ μ΄μ λ―ΈμΉλ μν₯μ λν μμΈν λ΄μ©μ http://stackoverflow.com/a/14866774 λ₯Ό μ°Έμ‘°
κΆκΈν©λλ€. μ¬κΈ°μ ssh λ¬Έμ λ 무μμ λκΉ?
pty = falseλ λλ₯Ό μν΄ μλν©λλ€.
μ€μ λ‘ SSH λ¬Έμ κ° μλλ©° BASH λΉλν ν / λν ν λͺ¨λ λ° νλ‘μΈμ€ κ·Έλ£Ήμ λν μ νΈ μ νμ λν λ―Έλ¬ν λμμ λλ€.
λ€μμ http://stackoverflow.com/questions/14679178/why-does-ssh-wait-for-my-subshells-without-t-and-kill-them-with-t/14866774#14866774 λ° httpλ₯Ό κΈ°λ°μΌλ‘ν©λλ€
μμλ bash μμ μμλ νλ‘μΈμ€μ stdout / stderr / stdinμ μ°κ²°λλ©° μμΌμ μ°κ²°λ νλͺ©μ΄μκ³ μμμ΄ μ’ λ£ λ λκΉμ§ κ³μ μ€νλ©λλ€. μ’μ λ°λͺ¬ νλ‘μΈμ€λ μμμ΄ μ’ λ£ ν λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ μμ νλ‘μΈμ€λ₯Ό ν¬ν¬ ν λ€μ μ’ λ£νμ§ μλλ‘ν©λλ€. μ΄ λͺ¨λμμλ SSHμ μν΄ νμ νλ‘μΈμ€μ SIGHUPκ° μ μ‘λμ§ μμ΅λλ€. λλ μ΄κ²μ΄ μ€μ€λ‘ μ λ§ νλ₯Ό μ²λ¦¬νκ³ λ°°κ²½νν νμκ°μλ νλ‘μΈμ€λ₯Ό μ€ννλ λλΆλΆμ μ€ν¬λ¦½νΈμμ μ¬λ°λ₯΄κ² μλ ν κ²μ΄λΌκ³ λ―Ώμ΅λλ€. init μ€ν¬λ¦½νΈκ° νλ‘μΈμ€λ₯Ό λ°±κ·ΈλΌμ΄λνκΈ° μν΄ '&'λ₯Ό μ¬μ©νλ κ²½μ°, μΈμ μ΄ μ’ λ£ λ κ²½μ° SIGHUPλ₯Ό νΈλ¦¬κ±°νκΈ° λλ¬Έμ λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€κ° stdinμμ μ½κΈ°λ₯Ό μλνλμ§ μ¬λΆκ° μ£Όμ λ¬Έμ μΌ κ°λ₯μ±μ΄ λμ΅λλ€.
init μ€ν¬λ¦½νΈκ° νλ‘μΈμ€κ° μμλ λ°°κ²½μ λ°°κ²½μΌλ‘νλ κ²½μ° λΆλͺ¨ BASH μ Έμ SSH μ°κ²°μ μ’ λ£ μ½λλ₯Ό λ°νν©λλ€. κ·Έλ¬λ©΄ μμ νλ‘μΈμ€κ° μ’ λ£ λ λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ stdoutμμ μ°¨λ¨λμ§ μκΈ° λλ¬Έμ μ¦μ μ’ λ£λλ κ²μΌλ‘ 보μ λλ€. / stderr / stdin. μ΄λ κ²νλ©΄ SIGHUPκ° λΆλͺ¨ bash μ Έ νλ‘μΈμ€ κ·Έλ£ΉμΌλ‘ μ μ‘λ©λλ€. bashμ λΉλν ν λͺ¨λμμ μμ μ μ΄κ° λΉνμ±νλμμΌλ―λ‘ λ°©κΈ μμν μμ νλ‘μΈμ€κ° ν¬ν¨λ©λλ€. λ°λͺ¬ νλ‘μΈμ€κ° λΆκΈ°λκ±°λ λΆκΈ° λ νλ‘μΈμ€μμ μ νλ‘μΈμ€ μΈμ μ λͺ μ μ μΌλ‘ μμνλ κ²½μ° ν΄λΉ λλ ν΄λΉ μμμ μ’ λ£λλ BASH λΆλͺ¨ νλ‘μΈμ€μμ SIGHUPλ₯Ό μμ νμ§ μμ΅λλ€. μ΄κ²μ SIGTERMμ΄ νμλλ μΌμ μ€μ§ λ μμ κ³Ό λ€λ¦ λλ€.
λλ μ΄κ²μ λν λ¬Έμ κ° λλλ‘ μ½κ°μ κ²½μ 쑰건과 κ΄λ ¨μ΄ μλ€κ³ μκ°ν©λλ€. deamonizingμ λν νμ€ μ κ·Ό λ°©μμ μ΄ν΄λ³΄λ©΄ http://www.itp.uzh.ch/~dpotter/howto/daemonize μ½λμμ μ μΈμ μ΄ λΆκΈ° λ νλ‘μΈμ€μ μν΄ μμ±λλ€λ κ²μ μ μ μμ΅λλ€. μμκ° μ’ λ£λκΈ° μ μ μ€νλλ―λ‘ μμμ μΈκΈ ν μμμ μ±κ³΅ / μ€ν¨ λμμ΄ λ°μν©λλ€. sleep λ¬Έμ λΆκΈ° λ νλ‘μΈμ€κ° μ μΈμ μ μμ±νλ λ° μΆ©λΆν μκ°μ νμ©νλ―λ‘ μΌλΆ κ²½μ°μ μλν©λλ€.
SSHλ bash μ Έμ stdout / stderr / stdin λλ μμλ μμ νλ‘μΈμ€μ μ°κ²°λμ§ μμ΅λλ€. μ¦, λΆλͺ¨ bash μ Έμ΄ μμ² λ λͺ λ Ή μ€νμ μλ£νμλ§μ μ’ λ£λ©λλ€. μ΄ κ²½μ° μμ μ μ΄κ° λͺ μ μ μΌλ‘ νμ±ν λ μνμμ '&'λ₯Ό μ¬μ©νμ¬ bash μμ μν΄ μμλ λͺ¨λ νλ‘μΈμ€λ μ¦μ λ³λμ μΈμ μ λ°°μΉλλ©° BASH μΈμ μ λν μμ νλ‘μΈμ€κ° μ’ λ£ λ λ SIGHUP μ νΈλ₯Ό μμ νμ§ μμ΅λλ€ ( μ΄ κ²½μ° SSH μ°κ²°).
μ루μ μ λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€ / μλΉμ€λ‘ μμ ν λ νΉλ³ν κ²½μ°λ‘ run / sudo μμ λ¬Έμμ λͺ μ μ μΌλ‘ μΈκΈλμ΄μΌνλ€κ³ μκ°ν©λλ€. κΈ°λ³Έμ μΌλ‘ 'pty = false'λ₯Ό μ¬μ©νκ±°λ λΆκ°λ₯ν κ²½μ° μ²« λ²μ§Έ λͺ λ ΉμΌλ‘ μμ μ μ΄λ₯Ό λͺ μ μ μΌλ‘ νμ±ννλ©΄ λμμ΄ μ¬ λ°λ¦ λλ€.
λ§ν¬ μ λ°μ΄νΈ : http://www.ics.uzh.ch/~dpotter/howto/daemonize
λ΄κ° μ¬κΈ°μμ μΈκΈνλ―μ΄ fabrickit (ν¨λΈλ¦ λΌμ΄λΈλ¬λ¦¬μ λνΌ) https://github.com/HyukjinKwon/fabrickit/commit/cceb8bfb8f960a3ac41b24c64b8358bd6e7a0366
νΉμ ꡬμ±μ΄λ μ€μ μμ΄ νλ‘κ·Έλ¨μ λ°λͺ¬μΌλ‘ μ λ μ½κ² μμν μ μμ΅λλ€.
μ΄μ¨λ μ΄κ²μ μΌμ’
μ μ
Έ μ€νμ΄λ―λ‘ μ
Έμ΄ ν μμλ μμ
μ μννλ λ°©λ²μ΄ μμ΄μΌν©λλ€.
μ΄ μλ:
run("sh -c '((nohup %s > /dev/null 2> /dev/null) & )'" % cmd, pty=False)
λλ μ΄κ²μ μλνκ³ λ°λͺ¬μΌλ‘ μ€ννκΈ° μν΄ μΆκ° νλ‘κ·Έλλ°μ ꡬννμ§ μμλ μλ²½νκ² μλν©λλ€ (while 루ν λ΄μμ 'Hello'λ₯Ό μμ±νλ νλ‘κ·Έλ¨μ‘°μ°¨λ μ μλν©λλ€).
κ°μ₯ μ μ©ν λκΈ
μ΄ λ¬Έμ μ μ§λ©΄νμ΅λλ€.
sudoλ‘ λͺ λ Ήμ μ€ννκΈ° λλ¬Έμ tty = Falseλ₯Ό μ¬μ©ν μμλ μν©μ΄ λ°μνμ΅λλ€.
>& /dev/null < /dev/null &
μΆκ°λ μ μ€νλμ§λ§ νλ‘μΈμ€κ° μμλμ§ μμμ΅λλ€.λͺ λ Ή μ€ν μ€ λ€μμ μ μ λͺ¨λλ₯Ό μΆκ°νλ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€ :
nohup java -jar text.jar & sleep 5; exit 0