Tương đương với Linux của Windows Startup là gì?


16

Có cách nào để thêm một ứng dụng / tập lệnh vào khởi động Linux để mỗi khi hệ thống khởi động nó sẽ được thực thi không?

Tôi đang tìm kiếm một số cách tự động, tức là người dùng không nên thêm điều này bằng công việc định kỳ hoặc một cái gì đó tương tự.



nếu đó là Ubuntu, chỉ cần sử dụng $ gnome-session-property
user 3804598

Câu trả lời:


11

Một cái gì đó giống như Cron ?

Lưu ý @rebootmục

Đây là cách tiếp cận linh hoạt nhất và cũng giống như "Nhiệm vụ theo lịch trình" của Windows (thực tế tốt hơn).


Có thể thêm một công việc trong CRON mà không có ý định của người dùng?
Sourav

Đúng. chỉ cần viết thư /etc/cron.dhoặc gọi crontab từ chương trình của bạn mà họ không biết.

Ý anh là gì? Nếu bạn có nghĩa là thêm một cách thủ công, thì có. Crontabs chỉ là tập tin văn bản.

10

Xorg tự động khởi động

Ngoài các kịch bản khởi động ở cấp hệ thống, môi trường máy tính để bàn của bạn có thể có các chương trình tự động chạy riêng. Thư mục .config/autostartđược cho là một cách trung lập trên máy tính để xác định các mục nhập tự động. /etc/xdg/autostartdành cho cấu hình toàn hệ thống. Chi tiết về thông số kỹ thuật tại http://developer.gnome.org/autostart-spec/ .

Đối với các mục tự khởi động LXDE cũng có thể được đặt trong ~/.config/lxsession/LXDE/autostart.

Sẽ hơi khác một chút nếu bạn cần chạy tập lệnh của mình sau khi mạng hoạt động. Trong trường hợp đó, bạn nên kiểm tra các tập lệnh kết nối sau đặc biệt có thể được xác định cho trình quản lý mạng của bạn. Cả NetworkManagerwicd đều có những cách riêng để chỉ định các mục nhập tự động sau kết nối. Nếu mạng được cấu hình thông qua ifupdown, thì các tập lệnh đăng lên có thể được đặt trong /etc/network/if-up.d/thư mục. Nhưng một cách tiếp cận tốt hơn để chạy các kịch bản hậu kết nối có thể là systemd (đối với các hệ thống hỗ trợ nó, phần lớn các bản phân phối hiện đại).

Tự động khởi động như một dịch vụ systemd

Nếu thứ bạn muốn tự khởi động không phải là một ứng dụng đồ họa cần có máy tính để bàn thì tốt nhất bạn nên tránh sử dụng bất kỳ tiện ích tự khởi động nào được cung cấp bởi xorg hoặc bởi môi trường máy tính để bàn hiện tại của bạn.

systemd đã trở nên phổ biến trong nhiều bản phát hành hiện đại, và nó cung cấp rất nhiều quyền kiểm soát và tính linh hoạt về cách thức các dịch vụ của bạn được bắt đầu và cách chúng chạy.

Tôi sẽ tóm tắt một số lợi ích ( systemd có thể làm nhiều hơn nữa ):

  • Chạy với quyền root hoặc người dùng cụ thể: vd User=myuser
  • Khởi động lại dịch vụ khi không thành công với thời gian chờ cấu hình: Restart=on-failure|on-watchdog|on-abnormal|always
  • Đặt loại dịch vụ: Type=simple|forking|oneshot|notify|dbus
  • Thiết lập các điều kiện tiên quyết và phụ thuộc khởi động, tức là bạn có thể đặt dịch vụ của mình bắt đầu sau khi mạng kết thúc ( Wants=network-online.targettrong [Unit]phần).

Một dịch vụ ví dụ bắt đầu một telegram-cli daemon. Đặt nó vào /etc/systemd/system/tg.service.

[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli

User=jicu

[Install]
WantedBy=multi-user.target

Bây giờ bạn có thể kích hoạt dịch vụ để tự khởi động:

sudo systemctl enable tg

Bắt đầu dịch vụ:

sudo systemctl start tg

Dừng dịch vụ:

sudo systemctl stop tg

Kiểm tra trạng thái:

systemctl status tg

Vô hiệu hóa dịch vụ:

sudo systemctl disable tg

Để tiết kiệm cho bạn thêm gõ, bạn có thể thêm vào ~/.bashrcdòng của mình alias sc='sudo systemctl $*'sau đó bạn sẽ có thể rút ngắn các lệnh trên để ví dụ sc start tg.

LƯU Ý: Nếu bạn đã sử dụng cronthì hãy biết rằng các mục crontab được chạy trong môi trường bị hạn chế - áp dụng tương tự cho systemd: luôn sử dụng các đường dẫn tuyệt đối và không đưa ra giả định về bất kỳ biến nào được xác định. Hoàn toàn đặt bất kỳ biến nào mà tập lệnh của bạn phụ thuộc vào. systemd sẽ không sử dụng người dùng của bạn .bashrc$PATH.

Thêm thông tin:


7

Có, có thể chạy các chương trình khi khởi động trên Linux bằng cách xác định các đường dẫn đến các tệp thực thi trong rc.localđó nằm trong thư mục /etchoặc /etc/rc.d, ví dụ:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/path/to/executable

Lưu ý: đừng quên gán quyền thực thi như được mô tả trong tài liệu của tệp, nghĩa là Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.


Thêm mục trong tập tin sẽ bắt đầu chương trình mỗi lần?
Sourav

2
Mỗi lần bạn khởi động lại, vâng. Nếu bạn muốn các công việc được lên lịch thường xuyên (mỗi ngày, giờ, tuần hoặc bất kỳ sự kết hợp kỳ lạ nào) thì người lập cronlịch là bạn của bạn.

3
  1. Tìm kiếm Startup applicationsbằng nút Home
  2. Nhấp chuột Add
  3. Nhập tên để gọi ứng dụng (bất kỳ tên nào cũng được)
  4. Trong lệnh Startup command boxnhập
  5. Bấm OK(Bạn sẽ thấy lệnh mới của bạn trong danh sách)
  6. Nhấp chuột Close

Kiểm tra bằng cách khởi động lại hoặc đăng xuất và đăng nhập lại.

Nguồn: https://help.ubfox.com/community/AddingProgramToSessionStartup


1

Mỗi bản phân phối sử dụng mỗi kỹ thuật bootstrap riêng, vì vậy cần xem tài liệu cho bản phân phối của bạn. /etc/rc.local là nơi bạn có thể đặt một số tập lệnh tự động, nhưng nó thực sự đã lỗi thời. Bây giờ hầu hết các hệ thống dựa trên linux sử dụng runlevels hoặc systemd bootstraping, vì vậy hầu hết các công việc tự khởi động có thể được kiểm soát mức độ tốt.


0

Tôi đã tìm thấy câu trả lời của mình ở đây: /programming/7221757/run-automatically-program-on-startup-under-linux-ub Ubuntu Tôi có thể tạo một tập tin / tập lệnh để tắt trackpad khi tôi ở trong phiên Linux Ubuntu 12.10 của tôi.


3
Vui mừng bạn đã tìm thấy một giải pháp, bạn có thể bao gồm một bản tóm tắt các bước trong câu trả lời của bạn, vì vậy câu trả lời này hữu ích hơn chỉ là một liên kết. Cảm ơn!
slm

Đã tìm kiếm một cách để tự động hóa và tắt trackpad của tôi khi khởi động. Lệnh tôi đã nhập trong Terminal là 'sudo modprobe -r psmouse' Điều này sẽ tắt trackpad trong khi trong phiên hiện tại. Tôi muốn tự động hóa điều này khi khởi động. Tôi đã thực hiện một số nghiên cứu và viết một tập lệnh bằng cách sửa đổi tập tin /etc/rc.local, thêm psmouse 'sudo modprobe -r. Sau đó, ban hành các lệnh sau từ Terminal: 'sudo mv / filename /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.d tên tệp mặc định' Bây giờ bàn di chuột đã tắt lúc khởi động.
CatGuyTX
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.