banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start  XML
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 08/02/2012 18:20:54 (+0700) | #1 | 253339
monday1010
Member

[Minus]    0    [Plus]
Joined: 13/12/2008 23:18:55
Messages: 33
Offline
[Profile] [PM]
Chào các anh em,

Nhờ các anh em nào biết phân biệt giúp mình 2 câu lệnh sau nhé :

- /usr/sbin/httpd

- service httpd start

Thanks a lot.
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 08/02/2012 19:10:09 (+0700) | #2 | 253343
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Gợi ý:
Code:
$ su -
# file $(which service)
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 09/02/2012 09:02:39 (+0700) | #3 | 253366
monday1010
Member

[Minus]    0    [Plus]
Joined: 13/12/2008 23:18:55
Messages: 33
Offline
[Profile] [PM]
Chào anh quanta,

Như anh gợi ý thì em chỉ phân biệt được như sau thôi :

- /usr/sbin/httpd : chạy file httpd trong mục /usr/sbin

- service httpd start : chạy script file /sbin/service với parameter httpd, start

Cả 2 câu lệnh trên đều khởi chạy dịch vụ httpd, nhưng nếu cùng làm một việc mà cần 2 lệnh khác nhau làm gì nhẩy ? smilie

Thank anh quanta nhé smilie
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 09/02/2012 11:09:55 (+0700) | #4 | 253370
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

monday1010 wrote:
Chào anh quanta,

Như anh gợi ý thì em chỉ phân biệt được như sau thôi :

- /usr/sbin/httpd : chạy file httpd trong mục /usr/sbin

- service httpd start : chạy script file /sbin/service với parameter httpd, start

Cả 2 câu lệnh trên đều khởi chạy dịch vụ httpd, nhưng nếu cùng làm một việc mà cần 2 lệnh khác nhau làm gì nhẩy ? smilie
 

Còn 1 lệnh nữa đấy smilie :
Code:
# /etc/init.d/httpd start


Gợi ý tiếp: giả sử distro bạn đang dùng không có lệnh `service`, Apache được compile từ source, chưa có init script trong `/etc/init.d`, khi muốn stop Apache thì bạn làm thế nào?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 09/02/2012 19:41:59 (+0700) | #5 | 253406
monday1010
Member

[Minus]    0    [Plus]
Joined: 13/12/2008 23:18:55
Messages: 33
Offline
[Profile] [PM]

quanta wrote:

Gợi ý tiếp: giả sử distro bạn đang dùng không có lệnh `service`, Apache được compile từ source, chưa có init script trong `/etc/init.d`, khi muốn stop Apache thì bạn làm thế nào?  


Câu này của anh quanta khó à nha smilie

Em là dân network thôi, nhưng công ty đang thiếu người nên phải nghiên cứu he he

Đọc gợi ý của anh em đoán thế này:

- /usr/sbin/httpd : có là do người dùng cài đặt gói apache

- service httpd start : là do distro cung cấp cho người dùng

- /etc/init.d/httpd : sử dụng lúc khởi động hệ thống thì bật httpd luôn (sử dụng chkconfig httpd on)

Ý em muốn là khi mình sử dụng ( chkconfig httpd on ) thì khi hệ thống boot sẽ bật httpd bằng lệnh ( /usr/sbin/httpd ) smilie bởi vì mấy ông lập trình bảo bật httpd bằng lệnh này mới dùng được gói php-soap gì đó hihi

Cảm ơn anh.



[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 09/02/2012 20:40:48 (+0700) | #6 | 253417
[Avatar]
vulehcm
Member

[Minus]    0    [Plus]
Joined: 21/11/2011 20:37:50
Messages: 46
Offline
[Profile] [PM]
monday1010,

Chào bạn, đáng lẽ ra mình nên để cho bạn tìm hiểu tiếp như thế thì mới thú vị. Nhưng mình nghĩ thời gian của bạn có hạn nên thay vì chơi đánh đố mình sẽ giải thích ra những vấn đề bạn thắc mắc, và nếu bạn thích hoặc cảm thấy chưa đủ thì có thể tìm hiểu thêm để có câu trả lời hoàn thiện hơn.

Đầu tiên bạn nên tìm hiểu khái niệm biến môi trường (environment variable) và $PATH là một trong những biến đó. $PATH là biến môi trường chứa các đường dẫn, và nếu như bạn gõ vào terminal một dòng ví dụ như hvaonline thì bash sẽ tìm kiếm file hvaonline trong những đường dẫn mà biến $PATH đã nêu ra.

Ví dụ biến $PATH của root
Code:
root@debian:/sbin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@debian:/sbin#


Điều này đồng nghĩa với việc nếu bạn có file httpd trong thư mục /sbin thì bạn chỉ việc gõ vào trong terminal lệnh httpd là bash sẽ tự động chạy file httpd trong thư mục /sbin. Các file trong thư mục /sbin này chủ yếu là file nhị phân (binary file) và một số là đường dẫn đến file khác (softlink - symlink - symbols link).

Thư mục /etc/init.d/ là thư mục chứa các script khởi động dịch vụ. Các script này bạn có thể dùng cat để coi. Những script được đặt trong này thường sẽ được chạy vào lúc khởi động hệ thống, và bạn định nghĩa (khai báo) những script được chạy thông qua lệnh chkconfig.

Lệnh service là lệnh "run system V script" (trích luôn trong man service), có nghĩa là nếu bạn chạy service ... start thì có nghĩa là nó sẽ chạy file /etc/init.d/... start. Hay nói cách khác thì service có thể được xem là thay thế cho dòng /etc/init.d/ để tiết kiệm chữ hơn, và dĩ nhiên nó cũng có một vài lợi ích khác nhưng không bàn ở đây, ví dụ như xem list các dịch vụ đang chạy (service --status-all).

Giờ thì mình gợi ý tiếp bạn tìm hiểu các keyword sau đây : system V, run level.
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 09/02/2012 21:33:34 (+0700) | #7 | 253425
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

monday1010 wrote:

Ý em muốn là khi mình sử dụng ( chkconfig httpd on ) thì khi hệ thống boot sẽ bật httpd bằng lệnh ( /usr/sbin/httpd ) smilie
 

Thì đúng là nó đang làm thế đấy, chính xác hơn là:

`chkconfig httpd on` mặc định sẽ start httpd ở các runlevels 2345:
Code:
# chkconfig --list httpd
httpd          	0:off	1:off	2:on	3:on	4:on	5:on	6:off

(Đọc về runlevels để hiểu thêm, trên này mình có dịch một bài thì phải)

"start" ở đây nghĩa là nó sẽ chạy lệnh `/etc/init.d/httpd start` khi khởi động. Mở init script này, tìm đoạn start() function bạn sẽ thấy:
Code:
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile ${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

monday1010 wrote:

bởi vì mấy ông lập trình bảo bật httpd bằng lệnh này mới dùng được gói php-soap gì đó hihi
 

Không hiểu. Nguyên văn mấy "ông" ấy nói thế nào?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 10/02/2012 16:19:47 (+0700) | #8 | 253469
monday1010
Member

[Minus]    0    [Plus]
Joined: 13/12/2008 23:18:55
Messages: 33
Offline
[Profile] [PM]
Hi vulehcm, cảm ơn đôi lời chia sẻ của bạn, rất bổ ích với mình smilie

quanta wrote:

Không hiểu. Nguyên văn mấy "ông" ấy nói thế nào? 

Câu chuyện là thế này anh : trên server CentOS có một file .php ở thư mục /var/www/html.

- Trường hợp khi gọi file .php này không chạy :

. start httpd bằng lệnh : service httpd start
. sử dụng "chkconfig httpd on" và khởi động lại server

- Trường hợp khi gọi file .php này chạy ok :

. dừng httpd bằng : service httpd stop
. bật lại httpd bằng : /usr/sbin/httpd

Bài toán làm sao khi server khởi động lại, mình gọi file .php kia chạy ok mà không cần start bằng tay câu lệnh "/usr/sbin/httpd"
File .php kia có sử dụng module php-soap

Cảm ơn anh đã đọc bài smilie

[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 10/02/2012 22:02:28 (+0700) | #9 | 253482
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

monday1010 wrote:

Câu chuyện là thế này anh : trên server CentOS có một file .php ở thư mục /var/www/html.

- Trường hợp khi gọi file .php này không chạy :

. start httpd bằng lệnh : service httpd start
. sử dụng "chkconfig httpd on" và khởi động lại server
 

--> nó báo lỗi gì? Lúc đó Apache đã được start chưa? Tại sao cần khởi động lại server vậy?

monday1010 wrote:

- Trường hợp khi gọi file .php này chạy ok :

. dừng httpd bằng : service httpd stop
. bật lại httpd bằng : /usr/sbin/httpd
 

Khi nó đã chạy OK rồi, bạn lại stop bằng lệnh `service` và start lại với full path `/usr/sbin/httpd` với mục đích gì?

monday1010 wrote:

Bài toán làm sao khi server khởi động lại, mình gọi file .php kia chạy ok mà không cần start bằng tay câu lệnh "/usr/sbin/httpd"
 

`chkconfig httpd on` đã làm việc đó rồi.

monday1010 wrote:

File .php kia có sử dụng module php-soap
 

Không liên quan gì cả. Nếu php-soap vừa mới được cài thì chỉ cần restart Apache là được.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Nhờ phân biệt lệnh /usr/sbin/httpd và service httpd start 11/02/2012 10:23:31 (+0700) | #10 | 253494
monday1010
Member

[Minus]    0    [Plus]
Joined: 13/12/2008 23:18:55
Messages: 33
Offline
[Profile] [PM]
Sửa lại ý của em để rõ hơn :

quanta wrote:

monday1010 wrote:

Câu chuyện là thế này anh : trên server CentOS có một file .php ở thư mục /var/www/html.

- Trường hợp khi gọi file .php này không chạy khi httpd được bật theo cách sau :

. start httpd bằng lệnh : service httpd start
. sử dụng "chkconfig httpd on" và khởi động lại server
 

--> nó báo lỗi gì? Lúc đó Apache đã được start chưa? Tại sao cần khởi động lại server vậy?
--> PHP Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://x.x.x.x/Ws/services/SendMessage?wsdl' : failed to load external entity "http://x.x.x.x/Ws/services/SendMessage?wsdl"\n in /var/www/html/file.php:3\nStack trace:\n#0 /var/www/html/file.php(3): SoapClient->SoapClient('http://118.70.2...')\n#1 {main}\n thrown in /var/www/html/file.php on line 3

monday1010 wrote:

- Trường hợp khi gọi file .php này chạy ok khi httpd được bật theo cách sau :

. dừng httpd bằng : service httpd stop
. bật lại httpd bằng : /usr/sbin/httpd
 


 


Hehe rối rắm quá à. Cuối tuần thư giãn thôi anh ơi smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|