Linux等同于Windows启动?


Answers:


11

就像是 Cron

注意 @reboot条目

这是最灵活的方法,最类似于Windows的“计划任务”(实际上更好)。


是否可以在用户不希望的情况下在CRON中添加作业?
Sourav

是。只需写入/etc/cron.d,或在程序不知情的情况下从程序中调用crontab。

你什么意思?如果您要以编程方式手动添加一个,则可以。Crontab只是文本文件。

10

Xorg自动启动

除了系统级启动脚本之外,您的桌面环境还可能具有其自己的自动运行程序的方式。该文件夹.config/autostart应该是定义自动运行项的与桌面无关的方式。/etc/xdg/autostart用于系统范围的配置。有关规范的详细信息,请参见http://developer.gnome.org/autostart-spec/

对于LXDE,也可以在中设置自动启动条目~/.config/lxsession/LXDE/autostart

如果在网络启动并运行需要运行脚本则有所不同。在这种情况下,您应该检查可以为网络管理员定义的特殊的连接后脚本。这两种网络管理器WICD有自己指定连接后自动运行项的方式。如果通过来配置网络ifupdown,则可以将发布脚本放置在/etc/network/if-up.d/文件夹中。但是,可能有一种更好的方法来运行连接后脚本(对于支持它的系统,这是现代发行版中的大多数)。

作为系统服务自动启动

如果您要自动启动的东西不是需要桌面的图形应用程序,那么最好避免使用xorg或当前桌面环境提供的任何自动启动功能。

systemd 在许多现代发行版中已变得无处不在,并且就如何启动服务和如何运行它们提供了很多控制和灵活性。

我将总结一些好处( systemd可以做更多的事情):

  • 以root或特定用户身份运行:例如 User=myuser
  • 如果发生故障,请使用可配置的超时重启服务: Restart=on-failure|on-watchdog|on-abnormal|always
  • 设置服务类型: Type=simple|forking|oneshot|notify|dbus
  • 建立启动先决条件和依赖关系,即,您可以将服务设置为在网络启动后启动(Wants=network-online.target在本[Unit]节中)。

启动telegram-cli守护程序的示例服务。将其放入/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

现在,您可以启用该服务以自动启动:

sudo systemctl enable tg

启动服务:

sudo systemctl start tg

停止服务:

sudo systemctl stop tg

检查状态:

systemctl status tg

禁用服务:

sudo systemctl disable tg

为了节省您的额外输入,您可以~/.bashrc在行中添加,alias sc='sudo systemctl $*'然后将上面的命令缩短为例如sc start tg

注意:如果您曾经使用过,cron那么请注意crontab条目是在受限环境中运行的—同样适用于systemd:始终使用绝对路径,并且不假设已定义任何变量。明确设置脚本依赖的任何变量。systemd 不会使用您用户的.bashrc$PATH

更多信息:


7

是的,可以通过rc.local/etc/etc/rc.d目录中定义可执行文件的路径来在Linux上启动时运行程序,例如:

#!/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

注意:不要忘记按照文件文档中的说明分配可执行权限,即 Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.


在文件中添加条目将每次启动程序?
Sourav

2
每次重启时,都可以。如果您需要定期安排的工作(每天,每小时,每周或任何奇怪的组合),那么cron安排者就是您的朋友。


1

每个发行版都使用各自的引导程序技术,因此需要查看发行版的文档。/etc/rc.local是您可以放置​​一些自动化脚本的地方,但实际上已经过时了。现在,大多数基于linux的系统都使用运行级别或systemd引导程序,因此大多数自动启动的作业都可以进行精细控制。


0

我在这里找到了答案:https : //stackoverflow.com/questions/7221757/run-automatically-program-on-startup-under-linux-ubuntu 我能够创建文件/脚本来关闭触控板我的Linux Ubuntu 12.10会话。


3
很高兴找到了解决方案,您能否在答案中包括步骤概述,以使该答案比链接更有用。谢谢!
slm

正在寻找一种在启动时自动关闭触控板的方法。我在终端中输入的命令是'sudo modprobe -r psmouse'。这将在当前会话中关闭触控板。我想在启动时自动执行此操作。我做了一些研究,并通过修改文件/etc/rc.local并添加'sudo modprobe -r psmouse来编写脚本。然后从终端发出以下命令:'sudo mv / filename /etc/init.d/''sudo chmod + x /etc/init.d/filename''sudo update-rc.d filename defaults'现在触摸板处于关闭状态在启动时。
CatGuyTX
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.