编写了一个shell脚本,为了在嵌入式设备上电之初就启动jar程序
1 用xshell进行调试tail -f file.log 的时候发现设定的日志文件没有记录日志
只有在日志文件的目录下使用nohup 指令 日志才会被记录到 file.log里
明明在脚本里和日志目录下执行的语句都是相同的,为社么效果不一样
目录执行的路径是 /etc/profile.d 一开始所属是root,chown完变成了${username}
2 shell脚本在启动服务后仍然占用着当前界面,用ctrl+c退出会导致服务停止
if [ ! -f ${logPath}];
then
touch ${logPath}
sudo chown ${username}
nohup java -jar ${jarPath} >>${logPath} 2>&1 &
可能是因为 /etc/profile.d 是以root 执行 读到 exit 就相当于整个系统退出
所以使用权限低一点的开机脚本启动方式
Linux开机启动脚本2种方法
debian下设置开机自启动
在创建文件的部分,更改日志文件的所有者和执行权限
在整个shell脚本的末尾部分加上一个退出exit
exit 0
使用权限低一点的开机启动脚本的方法
把启动脚本放到 /etc/init.d/底下
sudo mv ${file} ${targetPath}
sudo chmod +x ${targetFile}
chkconfig --add ${targetFile}
chkconfig --list ${targetFile}
chkconfig --del ${targetFile}
chkconfig --list ${targetFile}
但是我的系统是debian的 显示chkconfig 不存在
或者是添加到rc.local /etc/init.d/rc.local 的末尾
#!/bin/bash # 此处是在 rc.local 文件里的并未试验过
bash /home/linaro/autostart.sh
exit 0
Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)
或者是使用update-rc.d
sudo update-rc.d xxx.sh defaults
可能遇到missing LSB tags and overrides 错误
这时要在文件头部加上说明 lsb tags 加完还是报错 可能是开头结尾有空格,破坏了标签格式
#!/bin/bash
### BEGIN INIT INFO
# Provides: bbzhh.com
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: tomcat service
# Description: tomcat service daemon
### END INIT INFO
missing LSB tags and overrides
Linux启动项管理:Update-rc.d 命令用法详解
删除开机启动项
update-rc.d -f test.sh remove
debian设置开机启动项
通过在/etc/rc.local下配置
nohup /bin/bash ${scriptPath} >> ${logPath} 2>&1 &
解决了问题
日志文件没有则新建,有可以在末尾添加,而且日志的内容比logback配置的内容要多
像是 system.out 一类的日志也会被记录。