linux daemon 权限,Linux 自启动服务 daemon实例

近来,都工作在 Linux 上,开始不断接触 Linux

更多的东西,开通这个 space

都很久了,还是留下点东西吧,日后应该对我对别人有点用处的,开通这个space不也是为了这个用途嘛,都是一些技术上的东西,非技术人员还是别看了吧,把你们搞晕了,我可罪过啊~~

今天需要用到 Linux

的自启动服务,在网上查了一些资料、请教了一下同事,总算摆平了。自启动服务是可以让

Linux 在启动是自动运行该程序的服务,用户也可以通过 service program

start|stop 等命令进行启动|停止。程序将会运行于后台。

要想使用自启动服务,一般需要两步,第一步就是程序本身编写需要做一些处理,第二步就是需要写一个shell脚步,启动时运行

#include

#include

#include

#include

#include

int main(int argc,char* argv[]){

pid_t

pid,sid;

pid =

fork();

if(pid<0){

exit(EXIT_FAILURE);

}

if(pid>0){

exit(EXIT_SUCCESS);

}

umask(0);

sid=setsid();

if(sid<0){

exit(EXIT_FAILURE);

}

if((chdir("/"))<0){

exit(EXIT_FAILURE);

}

close(STDIN_FILENO);

close(STDOUT_FILENO);

close(STDERR_FILENO);

while(1){

sleep(2);

}

return

0;

}

第一步就这样了,解析就不多说了。

第二步就是写个shell脚步

其实,在/etc/init.d下就有很多例子了,我也是参考这里面的,依葫芦划瓢就好了

#!/bin/bash

#

# /etc/rc.d/init.d/hello

#

# Starts the hello

#

# chkconfig: 345 44 56

# description: just a sample

# processname: hello

# Source function library.

. /etc/rc.d/init.d/functions

prog="/root/hello"

prog_s="var/lock/subsys/hello"

[ -f $prog ] || exit 0

RETVAL=0

#

# See how we were called.

#

start() {

# Check if it is already running

if [ ! -f $prog_s ]; then

echo -n $"Starting hello: "

daemon $prog

RETVAL=$?

[ $RETVAL -eq 0 ] && touch $prog_s

echo

fi

return $RETVAL

}

stop() {

echo -n $"Stopping hello: "

killproc $prog

RETVAL=$?

[ $RETVAL -eq 0 ] && rm -f $prog_s

echo

return $RETVAL

}

restart() {

stop

start

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

condrestart)

if [ -f $prog_s ]; then

restart

fi

;;

status)

status hello

;;

*)

echo $"Usage: $0

{start|stop|status|restart|condrestart}"

exit 1

esac

exit $RETVAL

把这个文件保存到/etc/init.d/下命名为hello就是了。还要加上运行权限

chmod +x hello

现在就可以通过运行 service hello start|stop|status|restart|condrestart 进行运行等操作了。

最后通过命令:

chkconfig --add hello

发服务添加到自启动行列就可以了。

通过 setup 看看system services 里有没有 hello 吧

good luck~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要让 vncserver 在 Linux 开机后自动启动,可以按以下步骤操作: 1. 编辑 /etc/systemd/system/vncserver@.service 文件,可以使用以下命令打开该文件: ``` sudo nano /etc/systemd/system/vncserver@.service ``` 2. 将以下内容复制到文件中: ``` [Unit] Description=VNC Server on %H After=syslog.target network.target [Service] Type=forking User=<your_username> Group=<your_group> WorkingDirectory=/home/<your_username>/ PIDFile=/home/<your_username>/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver %i -geometry 1280x800 -depth 24 -dpi 96 ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target ``` 注意:需要将 `<your_username>` 和 `<your_group>` 替换为你自己的用户名和用户组。 3. 保存并关闭文件。 4. 运行以下命令启用新的 systemd 服务: ``` sudo systemctl daemon-reload ``` 5. 运行以下命令将 vncserver 服务添加到系统启动项中: ``` sudo systemctl enable vncserver@:1.service ``` 这里的 `:1` 表示 VNC 服务的显示器号,可以根据需要更改。 现在,重启系统,vncserver 应该会自动启动了。可以使用以下命令检查服务是否正在运行: ``` systemctl status vncserver@:1.service ``` ### 回答2: 要实现vncserver在Linux系统开机自启动,可以按照以下步骤进行设置: 1. 在vncserver的安装目录中,找到vncserver启动脚本。该脚本一般位于"/etc/init.d/"或"/etc/rc.d/init.d/"目录下。 2. 使用文本编辑器(如vi或nano)打开该脚本文件,并添加以下内容: ``` #!/bin/sh # # chkconfig: 2345 20 80 # description: VNC Server ### BEGIN INIT INFO # Provides: vncserver # Required-Start: $network $syslog # Required-Stop: $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO # 设置DISPLAY环境变量 export DISPLAY=:1 # 启动vncserver case "$1" in start) su <your_username> -c "/path/to/vncserver :1" ;; stop) su <your_username> -c "/path/to/vncserver -kill :1" ;; restart) su <your_username> -c "/path/to/vncserver -kill :1" sleep 2 su <your_username> -c "/path/to/vncserver :1" ;; *) echo "Usage: /etc/init.d/vncserver {start|stop|restart}" exit 1 ;; esac exit 0 ``` 请确保将上述代码中的`<your_username>`和`/path/to/vncserver`替换为您实际的用户名和vncserver安装路径。 3. 保存并退出编辑器后,将该脚本设置为可执行权限。可以使用以下命令进行设置: ```shell sudo chmod +x /etc/init.d/vncserver ``` 4. 继续进行下一步命令: ```shell sudo chkconfig --add vncserver sudo chkconfig vncserver on ``` 现在,vncserver已经被设置为Linux系统开机自启动。重启您的系统后,vncserver应该会自动启动。 请注意,以上步骤基于systemd或sysvinit启动系统。如果您的系统使用其他启动系统,请根据相应的文档进行设置。 希望以上内容对您有所帮助。如有更多疑问,请随时追问。 ### 回答3: 要在Linux系统中实现vncserver开机自启动,可以按照以下步骤进行设置: 1. 打开终端,以root用户身份登录。 2. 修改vncserver的配置文件,可以使用任何文本编辑器打开配置文件。常见的配置文件路径是 "/etc/sysconfig/vncservers" 或 "/etc/sysconfig/vncservers"。执行以下命令打开该文件: ``` $ sudo vi /etc/sysconfig/vncservers ``` 3. 在配置文件中找到 "VNCSERVERS" 声明,该声明指定了要启动的vncserver实例。在该行中添加要启动的vncserver实例的编号和用户名,使用冒号分隔。例如,若要启动vncserver实例1,用户为"testuser",则在 "VNCSERVERS" 声明行中添加以下内容: ``` VNCSERVERS="1:testuser" ``` 4. 在配置文件中找到 "VNCSERVERARGS" 声明,该声明指定了要传递给vncserver的额外参数。如果没有该声明,请添加以下内容: ``` VNCSERVERARGS[1]="-geometry 1024x768" ``` 上述命令中的"-geometry 1024x768"可以根据需要进行修改,用于指定vncserver的分辨率。 5. 保存并关闭配置文件。 6. 执行以下命令以配置vncserver在启动时自动初始化X环境: ``` $ sudo /usr/bin/vncserver ``` 7. 配置开机自启动,执行以下命令: ``` $ sudo systemctl enable vncserver@:1.service ``` 8. 重新启动系统,vncserver应该会自动启动。 这样,通过以上步骤配置后,vncserver会在Linux系统开机时自动启动,并提供远程桌面访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值