Làm thế nào để có được cmd đầy đủ của một quá trình trong linux?


0

Quá trình cmd của tôi rất dài vì có rất nhiều đối số. Bây giờ tôi muốn kiểm tra cmd đầy đủ. Bằng cách sử dụng cat /proc/PROCESS_NUMBER/cmdline, cmd không được hiển thị đầy đủ. Có cách nào khác để xem chính xác cmd đầy đủ trong linux không?


Bạn đã thử ps -efwwww | grep <command name>chưa
jaume

Vừa thử. Điều này sẽ cho độ dài dòng lệnh tương tự như cat /proc/PROCESS_NUMBER/cmdlineCảm ơn đã cho tôi biết thêm về ps:-)
DeepNightTwo

Câu trả lời:


2

Dòng lệnh của bạn dài bao nhiêu?

Nếu nó nằm trong phạm vi megabyte, có lẽ bạn có thể biên dịch lại kernel của bạn với tệp lớn hơn ARG_MAXtrong linux-3.*/include/linux/limits.htệp của bạn . Tôi đặt ở đó

#define ARG_MAX  2097152    /* # bytes of args + environ for exec() */

(cũng có thể có một cách để thiết lập giới hạn đó một cách linh hoạt, nhưng tôi quên mất làm thế nào và tôi có thể sai)

Tôi thích ARG_MAXgiới hạn lớn vì thỉnh thoảng tôi sử dụng **/*.ctính năng mở rộng toàn cầu zshlà vỏ tương tác của tôi.

Đừng đặt một giá trị lớn vào ARG_MAX; Tôi đoán rằng bạn muốn có nó ít hơn 2% RAM có sẵn của bạn.

Lưu ý rằng /proc/*/cmdlinecó chứa byte rỗng. Bạn có thể dịch chúng, xem cái này .

phụ lục

nếu vì bất kỳ lý do gì bạn không thể mua một dòng lệnh lớn, hãy tìm một số cách và quy ước để tránh có một số lượng lớn các đối số chương trình như vậy. Chẳng hạn, bạn có thể sửa đổi chương trình được gọi để đọc một số thứ từ một tệp hoặc một số nguồn khác (cơ sở dữ liệu?). Ví dụ, một số chương trình Unix (ví dụ GCC) chấp nhận @tên tệp để đọc các tùy chọn từ một số tệp có tên tệp .


Cách này có vẻ hay đấy ~ Nhưng máy chủ này là máy chủ prod và tôi không có quyền biên dịch lại kernel. Độ dài dòng lệnh là xa megabyte. Đó là khoảng 10k nhiều nhất. Có dễ dàng với ít tác động đến máy chủ để làm điều này? Cảm ơn ~
DeepNightTwo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.