树莓派是神奇的机器,CPU和内存都少的可怜,但体积小功耗低,在上面搞些动搞些西其实也挺有意思,挺好玩的。装的是pidara,基本服务没有精简多少,先cat一下CPU和RAM。

[able@raspi ~]$ cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 464.48
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7 Hardware : BCM2708
Revision : 000e
Serial : 000000003123ffdc
[able@raspi ~]$ cat /proc/meminfo
MemTotal: 446672 kB
MemFree: 289976 kB
Buffers: 16872 kB
Cached: 65868 kB
SwapCached: 0 kB
Active: 88652 kB
Inactive: 50360 kB
Active(anon): 58692 kB
Inactive(anon): 844 kB
Active(file): 29960 kB
Inactive(file): 49516 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 446672 kB
LowFree: 289976 kB
SwapTotal: 524284 kB
SwapFree: 524284 kB
Dirty: 16 kB
Writeback: 0 kB
AnonPages: 56284 kB
Mapped: 16088 kB
Shmem: 3268 kB
Slab: 9684 kB
SReclaimable: 5664 kB
SUnreclaim: 4020 kB
KernelStack: 656 kB
PageTables: 1292 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 747620 kB
Committed_AS: 211148 kB
VmallocTotal: 565248 kB
VmallocUsed: 5024 kB
VmallocChunk: 347144 kB
[able@raspi ~]$
    树莓派可能是为了节省成本,并没有安装时间模块,所以每次开机时间都会被重置。因为很久没有动过电烙铁了,所以没有想过给它装上个硬件模块。
所以想到的方法是同步网络时间。开始的时候,搞个启动脚本,开机启动同步时间,可是每当机器重启时,半个小时都启动不了,而且就算启动了,也没有
同步时间。于是想第二个方法,用根用户的crontab,结果不知道为何,没有同步,crontab执行其他任务是没有问题的,原因还不明。
    另外一个问题,因为树莓派是通过网线连接TP-LINK路由的,同时有个小米盒子连着。小米盒子是个神奇的东西,只有你连接上TP-LINK的路由的,其他
电脑或手机设备就很难连接进去,即使是断开了小米盒子,状况依然无法解决。所以,老妹一看连接不上,就拔电源重启。可以将一些应用程序做成自启动,
可是并不是所有的程序都像nginx一样完善,会切换用户执行。
    还有一个问题,就是有些程序coredump,让它自动重启,系统配置貌似还做不到(可能可以做到)。我还想在树莓派上面跑个DHT爬虫,但DHT爬虫太占
网络了,如果一直开着的话,网络就基本废了。所以我是想在周一到五凌晨才开始运行,到17点就停了,可以配置之类的。
    基于上面种种需求,自己搞了个非常简单管理调度程序,特点:
    1. 可以管理三类程序,常驻进程(挂掉会自动重启),一次进程(负责启动,不管是否成功),优先的一次进程(负责启动,不管是否成功,具有最高
       优先级,所以程序必须等到此类程序退出后,方启动其他程序)
    2. 可以指定运行的用户,必须有相应的权限
    3. 常驻进程可以配置运行时间。
 
    缺点:
    1. 没有为每个进程分配优先级
    2. 没有设计没有进程的依赖关系
 
  相关配置文件:
[nginx@raspi bin]$ cat mysch.conf
#程序运行参数
#程序配置段PROG_LIST配置
#[NGINX]
#程序启动的命令
#RUN_COMMAND=/sbin/ntpdate 1.cn.pool.ntp.org
#运行该程序的用户组
#RUN_GROUP=nginx
#运行该程序的用户
#RUN_USER=nginx
#程序运行标志
# -1 程序启动后先等待其运行完毕方可运行其它程序
# 0 程序启动后不管其运行状态
# 1 程序按照RUN_TIME配置时间点运行,非该运行点自动停止通过kill信号
#RUN_FLAG=1
#RUN_FLAG=1时有效,程序运行时间段,星期(1-7),时间格式(24小时),各条件之间是或关系
#RUN_TIME=1-5,23:30-16:30|1-5,17:30-21:30|6-7,00:00-8:30 [COMMON]
#日志路径
LOG_PATH=/home/nginx/bin/log
#日志头
LOG_HEADER=schedule
#文件日志级别all,debug,info,warn,error,fatal,off
LOG_LEVEL=debug
#文件日志缓存,byte
LOG_BUFFER=102400
#文件切换时间,秒数
LOG_SWITCH_TIME=86400 #睡眠时间
SLEEP_TIME = 60
#推出时是否退出子程序
KILL_CHILD_FLAG = 1
#pid文件后,台执行时有效
PID_FILE=/home/nginx/bin/log/mysch.pid
#运行的用户
RUN_USER=root
PROG_LIST=NTP|NGINX|BIGFALSE [NTP]
RUN_COMMAND=/usr/sbin/ntpdate 1.cn.pool.ntp.org
RUN_USER=root
RUN_FLAG=-1 [NGINX]
RUN_COMMAND=/home/nginx/www/sbin/nginx
RUN_USER=nginx
RUN_FLAG=1
RUN_TIME=1-7,00:00-24:00
RUN_PID_FILE=/home/nginx/www/logs/nginx.pid [BIGFALSE]
RUN_COMMAND=/usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log
RUN_USER=nginx
RUN_FLAG=1
RUN_TIME=1-7,00:00-24:00
RUN_PID_FILE=/home/nginx/tinytrue/log/django.pid
 
    按照这个配置,运行的程序:
[nginx@raspi bin]$ p nginx
root 233 1 0 14:41 ? 00:00:00 /home/nginx/bin/mysch -c /home/nginx/bin/mysch.conf
nginx 304 1 0 14:42 ? 00:00:00 nginx: master process /home/nginx/www/sbin/nginx
nginx 305 304 0 14:42 ? 00:00:00 nginx: worker process
nginx 307 1 0 14:42 ? 00:00:00 /usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log
nginx 308 307 0 14:42 ? 00:00:00 /usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log
nginx 309 307 0 14:42 ? 00:00:00 /usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log
nginx 310 307 0 14:42 ? 00:00:04 /usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log
nginx 311 307 0 14:42 ? 00:00:06 /usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log
nginx 312 307 0 14:42 ? 00:00:10 /usr/bin/python /home/nginx/tinytrue/manage.py runfcgi host=127.0.0.1 port=7856 daemonize=true pidfile=/home/nginx/tinytrue/log/django.pid outlog=/home/nginx/tinytrue/log/access.log errlog=/home/nginx/tinytrue/log/error.log

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 
    相关代码:
  https://github.com/buf1024/mysch

mschedule 简单linux进程管理(树莓派)的更多相关文章

  1. Linux进程管理知识整理

    Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...

  2. Linux进程管理专题

    Linux进程管理 (1)进程的诞生介绍了如何表示进程?进程的生命周期.进程的创建等等? Linux支持多种调度器(deadline/realtime/cfs/idle),其中CFS调度器最常见.Li ...

  3. Linux进程管理 (1)进程的诞生

    专题:Linux进程管理专题 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 L ...

  4. Linux进程管理 (7)实时调度

    关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...

  5. 《Linux 性能及调优指南》1.1 Linux进程管理

    https://blog.csdn.net/ljianhui/article/details/46718835 本文为IBM RedBook的Linux Performanceand Tuning G ...

  6. linux进程管理(二)

    接上[linux进程管理(一)] 终止进程的工具 kill .killall.pkill 终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ...

  7. 《Linux性能及调优指南》----1.1 Linux进程管理

    翻译:飞哥 ( http://hi.baidu.com/imlidapeng ) 版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明. 原文名称:<Linux Performance ...

  8. 《Linux性能及调优指南》 Linux进程管理

    版权所有: 原文名称:<Linux Performance and Tuning Guidelines> 原文地址:http://www.redbooks.ibm.com/abstract ...

  9. [转帖]linux进程管理总结

    linux进程管理总结 https://www.cnblogs.com/chenfangzhi/p/10660355.html 高手总结的.. 看出来我是菜逼. 目录 一.进程相关的概念 二.关闭会话 ...

随机推荐

  1. 关于 Head First SQL 中文版

    我想谈谈 我对于Head  First  SQL  中文版的一些看法 事实上关于我翻译的这个Head  First  SQL 中文版..我自觉得:的确翻译得非常烂.. 和翻译Head  First  ...

  2. 限制 UITextField 输入长度

    限制 UITextField 输入长度 标签(空格分隔): UITextField UITextField 是 iOS 中最经常使用的组件之中的一个.关于它也有各种各样的需求,这些需求是它本身没有提供 ...

  3. 基于SQL的日志分析工具myselect

    基本介绍 程序开发者常常要分析程序日志,包括自己打印的日志及使用的其他软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令能够使用,如grep,sort,uniq,awk ...

  4. Android三种实现自定义ProgressBar的方式介绍

    一.通过动画实现 定义res/anim/loading.xml如下: View Row Code<?xml version="1.0" encoding="UTF- ...

  5. (转) Unity3D中角色的动画脚本的编写(三)

    在上一篇,我们具体的讲解了有关动画的融合,也提到了有关动画状态的权重问题.那么这次,我来以一个例子的形式来向大家讲解动画的叠加,或许会涉及到多方面的知识,我力求一次讲清.好了,我们开始吧! 首先我们必 ...

  6. Meth | elementary OS常用配置

    一,搜狗输入法 sudo apt-get remove ibussudo add-apt-repository ppa:fcitx-team/nightlysudo apt-get updatesud ...

  7. android基础篇学习心得

    android技术中,线程.进程.JNI.IPC和各个小框架结构是基本功.在跟随高焕堂老师的android程序猿到架构师之路系列视频中 学习完基础篇之后,颇有些心得,记录下来. android开发就是 ...

  8. service redis does not support chkconfig的解决办法

    原文链接: http://my.oschina.net/maczhao/blog/322931 问题解决办法如下: 必须把下面两行注释放在/etc/init.d/redis文件靠前的注释中: # ch ...

  9. 【教训】rm -fr ./* 教训

    昨晚犯了一个重大错误,运行了 rm -rf ./* 本来是要删除一个不重要的目录的,结果在它的父目录下运行了上面命令,结果...都没了... 幸好数据库文件没有被删掉,数据还在,网站程序被删掉了,不久 ...

  10. 在Ubuntu上安装使用Systemtap

    因为最近开始学习Nginx,在网上看到别人介绍了一款强大的内核探测工具Systemtap,于是便准备学习下这款探测工具为以后代码分析做准备. 第一步便是安装.在自己电脑上安装的时候,也是费了一番劲儿. ...