2012-12-18 32 views
5

Tôi muốn tạo nhật ký cá nhân của riêng mình mà không chỉ đăng nhập khi tôi đăng nhập và đăng xuất mà còn khi tôi khóa/mở khóa màn hình của mình. Kindof như/var/log/wtmp trên steroid.Trong Bash, làm thế nào tôi có thể biết liệu mình hiện đang ở một thiết bị đầu cuối

Để thực hiện việc này, tôi quyết định chạy tập lệnh khi đăng nhập vào Ubuntu chạy trong nền cho đến khi tôi thoát. Kế hoạch của tôi để làm điều này là thêm tập lệnh vào .bashrc, sử dụng ./startlogging.sh & và trong tập lệnh, tôi sẽ sử dụng trap để nhận tín hiệu. Thật tuyệt vời, ngoại trừ .bashrc được chạy mỗi lần tôi mở một thiết bị đầu cuối mới, đó không phải là những gì tôi muốn cho trình ghi nhật ký.

Có cách nào để nói trong Bash rằng thông tin đăng nhập hiện tại là đăng nhập gnome không? Ngoài ra, có một số loại .gnomerc tôi có thể sử dụng để chạy tập lệnh của mình không?

Edit: Đây là kịch bản của tôi:

Chỉnh sửa 2: Removed kịch bản, vì nó không liên quan đến câu hỏi. Tôi sẽ đăng lại câu hỏi khác của tôi, thay vì sử dụng lại câu hỏi này.

Trả lời

4

Bạn đang tìm cách phát hiện loại thiết bị đầu cuối nào?

Hãy thử:

echo $TERM 

Từ Wikipedia:

HẠN (Unix-like) - quy định các loại thiết bị đầu cuối máy tính hoặc thiết bị đầu cuối giả lập được sử dụng (ví dụ, vt100 hay câm).

Xem thêm: List of Terminal Emulators

+0

Bạn có biết '$ TERM' sẽ là gì khi lần đầu tiên tôi đăng nhập vào gnome không? –

+0

@RobertMartin nó phải là 'gnome-terminal' cho gnome. –

+0

Chỉnh sửa: Câu trả lời của bạn là câu trả lời cho câu hỏi của tôi. Cảm ơn. –

0

để sử dụng bash: ~/bash_logout

đó sẽ được thực hiện khi bạn đăng xuất, mà âm thanh như những gì bạn đang cố gắng làm.

+0

Không thực sự đủ. Tôi muốn kịch bản của tôi chạy như một daemon, đăng nhập khi tôi đăng nhập, khóa/mở khóa màn hình và đăng xuất. Xem kịch bản trong câu hỏi. –

0

Vâng, đối với chỉ bash, những gì bạn muốn là .bash_login/.bash_logout trong thư mục chính của bạn (chứ không phải .bashrc) Đây là chạy bất cứ khi nào một vỏ ĐĂNG NHẬP bắt đầu/kết thúc, mà xảy ra bất cứ lúc nào bạn đăng nhập vào một vỏ (trên tty hoặc giao diện điều khiển, hoặc thông qua ssh hoặc đăng nhập mạng khác). Đây không phải là chạy cho các quy trình bash được tạo để chạy trong các cửa sổ đầu cuối mà bạn tạo (vì chúng không phải là các shell đăng nhập) nên sẽ không chạy bất cứ khi nào bạn mở một thiết bị đầu cuối mới.

Vấn đề là nếu bạn đăng nhập bằng một số cơ chế không liên quan đến thiết bị đầu cuối (chẳng hạn như gdm chạy trên bàn điều khiển để bắt đầu phiên gnome hoặc kde hoặc unity), thì không có vỏ đăng nhập nào .bash_login/logout không bao giờ chạy. Đối với trường hợp đó, dễ nhất có thể là đặt một thứ gì đó vào trong .xsessionrc của bạn, nó sẽ chạy mỗi lần bạn bắt đầu một phiên X (điều này xảy ra với bất kỳ môi trường GUI nào, bất kể bạn chạy cái nào). Rất tiếc, không có tập lệnh chuẩn nào chạy khi phiên X kết thúc.

+0

Điều này có vẻ đầy hứa hẹn. Nếu tôi đặt kịch bản của tôi trong '.xsessionrc' và nền nó sử dụng &, nó sẽ chấm dứt ngay lập tức? Nó sẽ trở thành một daemon? Tôi muốn nó thoát khi tôi đăng xuất (nhận một SIGHUP). Như bạn thấy từ kịch bản, nó muốn chạy như một daemon. –

Các vấn đề liên quan