Ubuntu设置开机自启动脚本的方法是:修改/etc/init.d/rc.local这个文件,添加需要启动的程序即可,相关函数如下:
void SetSysAutoBoot() { char path[256] = {0}; int ret = 0; ret = readlink("/proc/self/exe",path,sizeof(path)); if((ret > 0 )&& (ret < sizeof(path))) { printf("system path : %s\n",path); } char* fileName = "/etc/init.d/rc.local"; int fileLen = GetFileSize(fileName); FILE * fp = fopen(fileName,"r+"); char* buf; buf = (char*)malloc(fileLen*2); char* tempBuf = buf; if(fp == NULL) { return; } int flag = 0; while(!feof(fp)) { tempBuf = fgets(buf,fileLen,fp); if(tempBuf != buf) { break; } //exist if(strstr(tempBuf,path) != 0) { // flag = 1; } } fclose(fp); //not exist if(0 == flag) { char buf[1024]; sprintf(buf,"echo \"%s &\" >> /etc/init.d/rc.local\n",path); printf(buf); system(buf); } free(buf); }
但是FC16系统并不系统自带/etc/init.d/rc.local这个文件,于是我们就要自作做一些配置了。
1. 首先写一个测试脚本,
touch /etc/rc.d/rc.local
这个文件的内容是:
#!/bin/sh date >> /IpMonitor/test.txt /IpMonitor/IpMonitor-Server &
设置可执行权限:
chmod 777 /etc/rc.d/rc.local
设置软链接:
ln -s /etc/rc.d/rc.local /etc/rc.local
2. 开启rc-local.service
systemctl start rc-local.service
3. reboot即可看到效果了。
top - 11:14:22 up 1 min, 2 users, load average: 1.37, 0.57, 0.21 Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.5%id, 0.1%wa, 0.2%hi, 0.1%si, 0.0%st Mem: 8152824k total, 442280k used, 7710544k free, 488k buffers Swap: 4095996k total, 0k used, 4095996k free, 137048k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 814 root 20 0 441m 2920 740 S 0.7 0.0 0:00.33 IpMonitor-Serve 1 root 20 0 37384 4360 2008 S 0.0 0.1 0:01.32 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0 5 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u:0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1 9 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kworker/1:0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1 11 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kworker/0:1 12 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1 13 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/2 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/2 16 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/2 17 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/3 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0 19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/3 20 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/3 21 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/4 22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/4:0 23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/4 24 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/4 25 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/5 26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/5:0 27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/5 28 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/5 29 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/6 30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/6:0 31 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/6 32 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/6 33 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/7 34 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/7:0 35 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/7 36 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/7 37 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 38 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# cat /IpMonitor/test.txt 2013年 07月 05日 星期五 11:05:20 CST 2013年 07月 05日 星期五 11:06:07 CST 2013年 07月 05日 星期五 11:08:02 CST 2013年 07月 05日 星期五 11:09:24 CST 2013年 07月 05日 星期五 11:11:49 CST 2013年 07月 05日 星期五 11:13:15 CST