Hướng dẫn php exec nohup - php executive nohup

Tôi đang cố gắng khởi chạy SAR và để nó chạy mãi mãi thông qua tập lệnh PHP. Nhưng vì bất cứ lý do gì, nó không bao giờ thực sự ra mắt. Tôi đã thử như sau:

exec('sar -u 1 > /home/foo/foo.txt &');
exec('sar -o /home/foo/foo -u 1 > /dev/null 2>&1 &');  

Tuy nhiên nó không bao giờ ra mắt SAR. Nếu tôi chỉ sử dụng:

exec('sar -u 1')

Nó hoạt động nhưng nó chỉ treo tập lệnh PHP. Tôi hiểu rằng nếu một chương trình được bắt đầu với chức năng EXEC, để nó tiếp tục chạy ở chế độ nền, đầu ra của chương trình phải được chuyển hướng đến tệp hoặc luồng đầu ra khác.

Đã hỏi ngày 6 tháng 7 năm 2015 lúc 20:07Jul 6, 2015 at 20:07

Hướng dẫn php exec nohup - php executive nohup

2

Tôi sẽ giả sử bạn chạy điều này trên nền tảng *nix. Để có được PHP để chạy một cái gì đó trong nền và không chờ đợi quá trình kết thúc, tôi sẽ giới thiệu 2 điều: đầu tiên sử dụng nohup và cũng chuyển hướng đầu ra của lệnh thành /dev/null (thùng rác).

Example:

 /dev/null 2>/dev/null &');

Nohup có nghĩa là chúng tôi không gửi tín hiệu "treo" (giết chết quá trình) khi thiết bị đầu cuối chạy lệnh đóng. means we do not send the "hang up" signal (which kills the process) when the terminal running the command closes.

> /dev/null 2>/dev/null & chuyển hướng đầu ra "bình thường" và "lỗi" đến vị trí blackhole /dev/null. Điều này cho phép PHP không phải chờ các đầu ra của lệnh được gọi. redirects the "normal" and "error" outputs to the blackhole /dev/null location. This allows PHP to not have to wait for the outputs of the command being called.

Một lưu ý khác, nếu bạn đang sử dụng PHP chỉ để gọi lệnh shell, bạn có thể muốn xem xét các tùy chọn khác như Ubuntu Upstart mà không có thành phần PHP-nếu bạn đang sử dụng Ubuntu.

Đã trả lời ngày 6 tháng 7 năm 2015 lúc 20:20Jul 6, 2015 at 20:20

DJ Sipedj SipeDJ Sipe

1.11612 Huy hiệu bạc12 Huy hiệu đồng12 silver badges12 bronze badges

1

(Php 4, Php 5, Php 7, Php 8)

EXEC - Thực hiện một chương trình bên ngoàiExecute an external program

Sự mô tả

EXEC (Chuỗi $command, mảng &$output =

exec('sar -u 1')
0, int
exec('sar -u 1')
1 =
exec('sar -u 1')
0): Chuỗi | Sai
(string $command, array &$output =
exec('sar -u 1')
0
, int
exec('sar -u 1')
1 =
exec('sar -u 1')
0
): string|false

Thông số

exec('sar -u 1')
3

Lệnh sẽ được thực thi.

exec('sar -u 1')
4

Nếu đối số

exec('sar -u 1')
4 có mặt, thì mảng được chỉ định sẽ được lấp đầy bằng mọi dòng đầu ra từ lệnh. Trailing Whitespace, chẳng hạn như
exec('sar -u 1')
6, không được bao gồm trong mảng này. Lưu ý rằng nếu mảng đã chứa một số phần tử, Exec () sẽ nối vào cuối mảng. Nếu bạn không muốn chức năng nối các phần tử, hãy gọi unset () trên mảng trước khi chuyển nó sang EXEC ().exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

exec('sar -u 1')
7

Nếu đối số

exec('sar -u 1')
7 có mặt cùng với đối số
exec('sar -u 1')
4, thì trạng thái trả về của lệnh thực thi sẽ được ghi vào biến này.

Trả về giá trị

Dòng cuối cùng từ kết quả của lệnh. Nếu bạn cần thực thi lệnh và có tất cả dữ liệu từ lệnh được truyền trực tiếp trở lại mà không có bất kỳ nhiễu nào, hãy sử dụng hàm passthru ().passthru() function.

Trả lại

 /dev/null 2>/dev/null &');
0 về thất bại.
 /dev/null 2>/dev/null &');
0
on failure.

Để có được đầu ra của lệnh thực thi, hãy chắc chắn đặt và sử dụng tham số

exec('sar -u 1')
4.

Ví dụ

Ví dụ #1 ví dụ exec ()exec() example

 /dev/null 2>/dev/null &');
2

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:

Returned with status 0 and output:
Array
(
    [0] => cmb
)

Ghi chú

Cảnh báo

Khi cho phép dữ liệu do người dùng cung cấp được truyền vào chức năng này, hãy sử dụng escapeshellarg () hoặc escapeshellcmd () để đảm bảo rằng người dùng không thể lừa hệ thống để thực hiện các lệnh tùy ý.escapeshellarg() or escapeshellcmd() to ensure that users cannot trick the system into executing arbitrary commands.

Ghi chú::

Nếu một chương trình được bắt đầu với chức năng này, để nó tiếp tục chạy ở chế độ nền, đầu ra của chương trình phải được chuyển hướng đến một tệp hoặc luồng đầu ra khác. Không làm như vậy sẽ khiến PHP bị treo cho đến khi việc thực hiện chương trình kết thúc.

Ghi chú::

Nếu một chương trình được bắt đầu với chức năng này, để nó tiếp tục chạy ở chế độ nền, đầu ra của chương trình phải được chuyển hướng đến một tệp hoặc luồng đầu ra khác. Không làm như vậy sẽ khiến PHP bị treo cho đến khi việc thực hiện chương trình kết thúc.exec() will first start cmd.exe to launch the command. If you want to start an external program without starting cmd.exe use proc_open() with the

 /dev/null 2>/dev/null &');
3 option set.

Trên Windows Exec () trước tiên sẽ bắt đầu cmd.exe để khởi chạy lệnh. Nếu bạn muốn bắt đầu một chương trình bên ngoài mà không bắt đầu cmd.exe sử dụng Proc_open () với tùy chọn /dev/null 2>/dev/null &'); 3.

  • Xem thêm
  • System () - Thực hiện chương trình bên ngoài và hiển thị đầu ra
  • passthru () - thực hiện một chương trình bên ngoài và hiển thị đầu ra thô
  • Escapeshellcmd () - Escape Shell Metacharacters
  • pcntl_exec () - thực thi chương trình được chỉ định trong không gian quy trình hiện tại

toán tử backtick

Arno van den Brink ¶

 /dev/null 2>/dev/null &');
4

 /dev/null 2>/dev/null &');
5

 /dev/null 2>/dev/null &');
6

13 năm trước

Arno van den Brink ¶

 /dev/null 2>/dev/null &');
7

 /dev/null 2>/dev/null &');
8

13 năm trước

Returned with status 0 and output:
Array
(
    [0] => cmb
)
0

Returned with status 0 and output:
Array
(
    [0] => cmb
)
1

Returned with status 0 and output:
Array
(
    [0] => cmb
)
2

Returned with status 0 and output:
Array
(
    [0] => cmb
)
3

dell_petter tại hotmail dot com

 /dev/null 2>/dev/null &');
9

Returned with status 0 and output:
Array
(
    [0] => cmb
)
4

Returned with status 0 and output:
Array
(
    [0] => cmb
)
5

Returned with status 0 and output:
Array
(
    [0] => cmb
)
6

Returned with status 0 and output:
Array
(
    [0] => cmb
)
7

 /dev/null 2>/dev/null &');
6

Simon ¶

7 năm trước

Returned with status 0 and output:
Array
(
    [0] => cmb
)
9

nohup0

nohup1

 /dev/null 2>/dev/null &');
6

Krjdev tại gmail dot com ¶

11 thàng trước

nohup3

nohup4

nohup5

 /dev/null 2>/dev/null &');
6

msheakoski @t yahoo [email & nbsp; được bảo vệ] com ¶

18 năm trước

nohup7

IVK ¶

1 năm trước

nohup8

nohup9

/dev/null0

 /dev/null 2>/dev/null &');
6

Farhad Malekpour ¶

15 năm trước

/dev/null2

/dev/null3

/dev/null4

/dev/null5

/dev/null6

 /dev/null 2>/dev/null &');
6

Paul Sommer ¶

6 năm trước

/dev/null8

/dev/null9

 /dev/null 2>/dev/null &');
6

Bob-php tại Hamsterrepublic dot com

16 năm trước

> /dev/null 2>/dev/null &1

> /dev/null 2>/dev/null &2

> /dev/null 2>/dev/null &3

> /dev/null 2>/dev/null &4

> /dev/null 2>/dev/null &5

 /dev/null 2>/dev/null &');
6

Hans at internit dot no_spam dot com ¶

20 năm trước

> /dev/null 2>/dev/null &7

> /dev/null 2>/dev/null &8

> /dev/null 2>/dev/null &9

/dev/null0

 /dev/null 2>/dev/null &');
6

Layton tại Layton Dot TK ¶

17 năm trước

/dev/null2

/dev/null3

/dev/null4

/dev/null5

Elwiz ở 3E DOT PL ¶

12 năm trước

/dev/null6

/dev/null7

/dev/null8

/dev/null9

$command0

$command1

 /dev/null 2>/dev/null &');
6

Php dot reg tại kjpetrie dot co dot uk ¶

1 tháng trước

$command3

$command4

 /dev/null 2>/dev/null &');
6

Alvaro tại demogracia dot com

11 năm trước

$command6

$command7

$command8

$command9

&$output0

&$output1

&$output2

&$output3

 /dev/null 2>/dev/null &');
6

Hypolite Petovan ¶

2 năm trước

&$output5

&$output6

 /dev/null 2>/dev/null &');
6

Martin Lakes ¶

11 năm trước

&$output8

&$output9

exec('sar -u 1')
00

exec('sar -u 1')
01

exec('sar -u 1')
02

exec('sar -u 1')
03

 /dev/null 2>/dev/null &');
6

$command6

Hypolite Petovan ¶

2 năm trước

exec('sar -u 1')
06

exec('sar -u 1')
07

exec('sar -u 1')
08

Martin Lakes ¶

Bahri tại Bahri Dot Info ¶

exec('sar -u 1')
09

exec('sar -u 1')
10

exec('sar -u 1')
11

exec('sar -u 1')
12

 /dev/null 2>/dev/null &');
6