Linux 下 Tomcat6使用jsvc 自启动

Linux 下 Tomcat6使用jsvc 自启动
Linux 下 Tomcat6使用jsvc 自启动

Linux 下 Tomcat6使用jsvc 自启动

1. 设置软连接

a) cd /your/tomcat/home,此处换成你的tomcat目录

b) ln –s apache-tomcat-6.0.16 tomcat

c) cd /usr/java

d) ln –s jdk1.6.0_03 jdk ,需要root

2. 配置环境变量:

a) 编辑~/.bashrc ,增加

export JAVA_HOME=/usr/java/jdk

export CATALINA_HOME=/your/tomcat/home

b) source ~/bashrc

3. 编译安装jsvc

cd $CATALINA_HOME/bin

tar zxvf jsvc.tar.gz

cd jsvc-src

chmod +x support/buildconf.sh

chmod +x configure

support/buildconf.sh

./configure && make

4. 创建pidfile ,需要root

touch /var/run/jsvc.pid

chown user /var/run/jsvc.pid

5. 创建tomcat 启动脚本

vi /etc/init.d/tomcat,需要root,内容如下#!/bin/sh

# Startup Script for Tomcat6

# chkconfig: 345 88 14

# description: Tomcat Daemon

# processname: jsvc

# pidfile: /var/run/jsvc.pid

#

# Created by rhao 2008-12-05

# Sun-Ustc Co.,Ltd

#

DAEMON_HOME=$CATALINA_HOME/bin

#此处换成你的tomcat用户

TOMCAT_USER=user

# for multi instances adapt those lines. TMP_DIR=/var/tmp

PID_FILE=/var/run/jsvc.pid

CATALINA_BASE=$CATALINA_HOME

CATALINA_OPTS=

CLASSPATH=\

$JAVA_HOME/lib/tools.jar:\

$CATALINA_HOME/bin/commons-daemon.jar:\ $CATALINA_HOME/bin/bootstrap.jar

case "$1" in

start)

#

# Start Tomcat

#

$DAEMON_HOME/jsvc-src/jsvc \

-user $TOMCAT_USER \

-home $JAVA_HOME \

-Dcatalina.home=$CATALINA_HOME \

-Dcatalina.base=$CATALINA_BASE \

-Djava.io.tmpdir=$TMP_DIR \

-wait 10 \

-pidfile $PID_FILE \

-outfile $CATALINA_HOME/logs/catalina.out \ -errfile '&1' \

$CATALINA_OPTS \

-cp $CLASSPATH \

org.apache.catalina.startup.Bootstrap

#

# To get a verbose JVM

#-verbose \

# To get a debug of jsvc.

#-debug \

exit $?

;;

stop)

#

# Stop Tomcat

#

$DAEMON_HOME/jsvc-src/jsvc \

-stop \

-pidfile $PID_FILE \

org.apache.catalina.startup.Bootstrap exit $?

;;

*)

echo "Usage tomcat.sh start/stop"

exit 1;;

esac

然后, chmod +x tomcat

6. 以服务启动,需要root

/sbin/chkconfig --add tomcat

7. 创建tomcat 后台监控脚本

vi /your/tomcat/home/check_service.sh ,内容如下:

#!/bin/sh

# Check Script for Tomcat6

if test `ps -ef |grep catalina.startup |grep -v grep |wc -l` -eq 0

then

echo 'Find VoiceFlow Server stop!Now Start Server!' > "/your/tomcat/home/test.txt"

/etc/init.d/tomcat start &

fi

作用是如果检测到tomcat没有启动,则启动之

8. crontab –e ,加入以下内容:*/1 * * * *

/your/tomcat/home/check_service.sh ,作用是每分钟调用一次/ your/tomcat/home/check_service.sh

Linux开机启动程序详解

Linux开机启动程序详解 由于操作系统正在变得越来越复杂,所以开机引导和关机下电的过程也越来越智能化。从简单的DOS系统转移到Windows NT系统,人们已经亲身感受到了这些变化——这已不仅仅是核心操作系统的启动引导和关闭了,还包括必须要同时启动或者关闭相当数量的服务项目。类似于Windows NT,Linux系统启动过程需要打开的服务项目也是数量极大的。 这里,我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤。 加载内核 LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核。请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存。因此,内核就必须完整地加载到可用RAM的第一个兆字节之内。为了实现这个目的,内核是被压缩了的。这个文件的头部包含着必要的代码,先设置CPU进入安全模式(以此解除内存限制),再对内核的剩余部分进行解压缩。 执行内核 内核在内存中解压缩之后,就可以开始运行了。此时的内核只知道它本身内建的各种功能,也就是说被编译为模块的内核部分还不能使用。最基本的是,内核必须有足够的代码设置自己的虚拟内存子系统和根文件系统(通常就是ext2文件系统)。一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。内核挂装了根文件系统之后,将启动并运行一个叫做init的程序。 注意:在这里我们故意略去了Linux内核启动的许多细节,这些细节只有内核开发人员才感兴趣。如果你好奇的话,可以访问http://https://www.360docs.net/doc/6a3863379.html,:8080地址处的“Kernel Hackers Guide”。 init进程 init进程是非内核进程中第一个被启动运行的,因此它的进程编号PID的值总是1。init读它的配置文件/etc/inittab,决定需要启动的运行级别(Runlevel)。从根本上说,运行级别规定了整个系统的行为,每个级别(分别由0到6的整数表示)满足特定的目的。如果定义了initdefault级别,这个值就直接被选中,否则需要由用户输入一个代表运行级别的数值。 输入代表运行级别的数字之后,init根据/etc/inittab文件中的定义执行一个命令脚本程序。缺省的运行级别取决于安装阶段对登录程序的选择:是使用基于文本的,还是使用基于X-Window的登录程序。

Linux下添加脚本到开机自启动的方法

Linux下添加脚本到开机自启动的方法 Linux配置开机自启动执行脚本的方法有很多,这里分享两种方法,分别是修改/etc/rc.local方法和chkconfig管理设置的方法,均可实现Linux配置开机自启动执行脚本的功能! 设置test.sh为开机要启动的脚本 [root@oldboy scripts]# vim /server/scripts/test.sh [root@oldboy scripts]# cat /server/scripts/ test.sh #!/bin/bash /bin/echo $(/bin/date +%F_%T) >> /tmp/ test.log 方法一:修改/etc/rc.local [root@oldboy ~]# ll /etc/rc.local lrwxrwxrwx. 1 root root 13 Mar 30 10:50 /etc/rc.local -> rc.d/rc.local 修改/etc/rc.local文件 [root@oldboy scripts]# tail -n 1 /etc/rc.local /bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null 重启系统,查看结果 [root@oldboy ~]# cat /tmp/test.log 2018-03-30_12:00:10 方法二:chkconfig管理 删除掉方法一的配置

[root@oldboy ~]# vim /etc/init.d/test #!/bin/bash # chkconfig: 3 88 88 /bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null [root@oldboy ~]# chmod +x /etc/init.d/test 添加到chkconfig,开机自启动 [root@oldboy ~]# chkconfig --add test [root@oldboy ~]# chkconfig --list test test 0:off 1:off 2:off 3:on 4:off 5:off 6:off 重启系统,查看结果 [root@oldboy ~]# cat /tmp/test.log 2018-03-30_12:00:10 2018-03-30_12:33:20 操作成功 关闭开机启动 [root@oldboy ~]# chkconfig test off [root@oldboy ~]# chkconfig --list test test 0:off 1:off 2:off 3:off 4:off 5:off 6:off 从chkconfig管理中删除test [root@oldboy ~]# chkconfig --list test test 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@oldboy ~]# chkconfig --del test

基于嵌入式linux的bsp概念与开发

引言 Linux诞生于1991年,芬兰学生LinuSTorvaldS是Linux操作系统的缔造者,与传统的操作系统不同,Linux操作系统的开发一开始就在FSF(自由软件基金会组织)的GPL(GNU Public License)的版本控制之下,Linux内核的所有源代码都采取了开放源代码的方式。Linux具有相当多的优点。 BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,其主要功能为屏蔽硬件,提供操作系统的引导及硬件驱动。Linux操作系统目前已发展为主流操作系统之一,并且还在不断的壮大和发展。 最新的2.6版内核增加了很多新特性为嵌入式应用提供广泛的支持,使得它不仅可以应用于大型系统,还可以应用于像PDA这类超小型系统中。随着Linux系统在嵌入式领域的广泛应用,对它的研究也在逐渐成为热点并且走向成熟。 在嵌入式系统开发过程中,板级支持包(BSP,BoardSuport Package)的开发已成为非常重要的环节。本文以Linux系统上的BSP技术为研究内容,讨论了BSP的基本概念和设计思想,特别针对Linux系统上BSP的层次结构、各功能模块的实现技术做了详细分析。 通过分析PC机的BIOS技术阐述了嵌入式系统中板级初始化流程和技术重点,并从源代码分析入手详细分析了PC机GURB引导程序设计技术,提出了嵌入式系统上BootLoader的程序结构和设计思想。 嵌入式操作系统对设备驱动程序的管理技术是BSP设计的重要组成部分。本文对比了Linux2.4和Linux2.6的设备驱动程序框架,同时结合大量源代码的研读,对Linux2.6内核的统一设备模型进行了深入的研究,剖析了内核对象机制的主要数据结构及驱动程序设计框架,理解了该模型对设备类的抽象机制,并在实际的项目实践中,结合所作的研究工作,圆满完成了基于ARM+Linux开发平台的BSP开发任务。 最后对本文研究工作进行了总结,并对下一步工作进行了展望。

设置Linux开机自动运行脚本

设置Linux开机自动运行脚本 参考资料 实现目标:在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志文件追加一条记录,源码如下: fromdatetime import datetime now=datetime.now() f=open('test.log','a') f.write('%s '%now) f.close() Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法: 方案一: 1、因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面 2、用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序: cd /home/test1 --该步不可少,否则会提示没有权限打开'test.log'文件 su test1 -c "python /home/test1/test.py" --把要执行的命令作为一个参数传递级su 方案二: 1、init.d目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务 2、用root帐号登录,vi /etc/rc.d/init.d/mystart,追加如下内容: #!/bin/bash #chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机, 6指的是重启,其他为正常启动。80为启动的优先级,05为关闭的优先机 #description:mystart service RETVAL=0 start(){ --启动服务的入口函数 echo -n "mystartserive ..." cd /home/test1 su test1 -c "python /home/test1/test.py" }

启动过程以及各个脚本的作用

开机自检-----MBR引导-----GRUB菜单------加载内核-----允许init进程 -----读取inittab(该文件中有运行级别,初始化文件,某个运行级别所要读取的文件,然后就执行/etc/rc.d/rcn.d向对应的文件) ----/etc/rc.d/rc.sysinit(由init进程调用执行,完成设置网络主机名加载文件系统等初始化工作------/etc/rc.d/rc(由init进程调用执行,根据指定的运行级别加载或终止相应的系统服务)------/etc/rc.d/rc.nd(是个目录,目录中有级别关闭和开启的服务K S 后的数字表示启动或关闭服务的优先级,越小越好----执行/etc/rc.d/rc.local(由rc脚本执行调用,保存用户定义的所需开机后自动执行的命令,可以开启某些服务,但是却不能关闭服务,因为关机时不读取该脚本,是最后读取的文件) -----启动mingetty(启动一个虚拟终端) init进程和inittab引导指令 init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。 init程序需要读取/etc/inittab文件作为其行为指针,inittab是以行为单位的描述性(非执行性)文本,每一个指令行都具有以下格式: id:runlevel:action:process其中id为入口标识符,runlevel为运行级别,action为动作代号,process为具体的执行程序。 id一般要求4个字符以内,对于getty或其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。 runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留,0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。 在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。 initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault 项,init将在控制台上请求输入 runlevel。

基于嵌入式Linux的汉字输入法

基于嵌入式Linux的汉字输入法 An Approach to Chinese Input based on Embedded Linux Abstract: The Chinese input problem is essential to an embedded system. An approach to on-line recognition of handwritten Chinese stroke is proposed., including its realization in embedded system. Keywords: handwritten Chinese character recognition; on-line recognition; dynamic recognition; embedded system 摘要:汉字输入法是嵌入式系统输入的一项重要技术,它的功能与性能直接影响到嵌入式系统在中国的推广与应用。主要研究了联机汉字手写体输入法,以及在嵌入式系统中实现汉字手写体输入法。 关键词:手写体识别;联机识别;动态识别;嵌入式系统; .1 引言 在信息时代,嵌入式系统如个人数字助理(PDA)、JAVA手机、人工智能电器等已广泛渗入人们的日常工作和生活中。由于受到键盘大小和按键数目的限制,汉字输入是影响嵌入式系统使用的重要因素。具有强烈人性化的手写汉字输入是解决嵌入式系统汉字输入问题的最佳方法之一。随着硬件成本的降低和汉字手写体识别技术的提高,汉字手写识别在嵌入式系统的应用将会日益广泛。 嵌入式系统是硬件资源受限系统,所以汉字手写体识别应考虑到嵌入式系统这个特点。其中比较重要的是,嵌入式系统的硬件配置低,除了考虑汉字识别的识别率外,还必须考虑输入的速度。手写汉字的输入时间包括书写时间和识别时间两部分,一般以前者所耗时间较多。当前市面上融合嵌入式手写汉字输入法的产品如PDA、智能手机、智能数码相机等几乎都在整个汉字书写完毕后才出现识别结果,所以即使系统的识别速度很快,也需要把整个汉字写完,因此整体的输入速度始终没有质的提高。针对上述问题,本文提出了一种基于汉字笔顺的联机动态手写汉字识别方法,在人们书写汉字的过程中,对其已经书写的部分汉字笔划进行动态识别,预测其想要书写的汉字并输出给用户选择,并且集成弹性网格特征法,以达到在保证识别率的前提下提高整体输入速度目的。本文主要进行以下几项工作:

linux下通过脚本实现自动重启程序.doc

linux下通过脚本实现自动重启程序 linux下通过脚本实现自动重启程序 自动重启故障相信大家都遇到过,原因也有很多,跟系统,硬件或者外界因素都有关,但是在Linux中可没有那么简单。这里集中讨论linux实现自动重启程序的方法。下面一起看看! 自动重启脚本 假定需要实现重启的程序名为test ,我们这里通过判断进程数目来判断程序是否正常。 ps -ef | grep $1 | grep -v grep | wc l 是获取$1(本例中为test)的进程数,脚本根据进程数来决定下一步的操作。通过一个死循环,每隔1秒检查一次系统中的指定程序的进程数。 代码如下: 脚本check #!/bin/sh #-----------------------------------# 函数: CheckProcess# 功能: 检查一个进程是否存在# 参数: $1 --- 要检查的进程名称# 返回: 如果存在返回0, 否则返回1.#---------------------------------------CheckProcess(){ # 检查输入的

参数是否有效if [ $1 = ]; then return 1 fi #$PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动PROCESS_NUM=`ps -ef | grep $1 | grep -v grep | wc -l` if [ $PROCESS_NUM -eq 1 ]; then return 0 else return 1 fi} # 检查test实例是否已经存在while [ 1 ] ; do CheckProcess test CheckQQ_RET=$? if [ $CheckQQ_RET -eq 1 ]; then# 杀死所有test进程,可换任意你需要执行的操作killall -9 test exec ./test fi sleep 1done 脚本start: 加入limit coredumpsize 102400,设置core file的大小,一旦程序Core Dump,有迹可寻。在该脚本中后台执行check脚本,可以省去很多麻烦, #!/bin/cshlimit coredumpsize 102400 ./check 补充:电脑总是自动重启怎么办 1、右击我的电脑,选择属性项。 2、在打开的系统属性窗口中选择高级系统设置项进入。

基于嵌入式Linux系统的3G4G路由器设计

[导读] 3G的接人技术已经从WCDMA/TD- SCDMA/CD-MA2000发展到HSDPA、HSUPA 以及HSPA+ ,并开始由3G 网络向4G网络过渡。 3G的接人技术已经从WCDMA/TD- SCDMA/CD-MA2000发展到HSDPA、HSUPA 以及HSPA+ ,并开始由3G 网络向4G网络过渡。目前HSDPA的接入带宽可以达到7.2 Mbps,HSPA+ 的接人带宽可以达到21 Mbps,而即将部署的LTE的网络带宽甚至达到了100 Mbps 。同时,由于接人移动互联网的智能终端的数量快速增长,人们对移动互联网的应用需求也日益增长。当人们面对几十兆带宽甚至是上百兆带宽时,必定存在带宽的过剩问题,即人们不需要在任何时刻都需要这么大的带宽,因而可以将过剩的用户带宽分配给更多的用户。 目前,WiFi技术能够支持IEEE的802.11b、802.11g和802.1ln标准,分别支持10 Mbps、54 Mbps和300 Mbps的无线传输速率。而在传输距离上,WiFi能够在几米到100m范围内实现完全覆盖。 本文正是基于3G/4G 不断增长的接入带宽以及WiFi技术的各项优点,提出了一种共享3G/4G 网络带宽的无线路由器设计方案。该方案首先利用嵌入式Linux系统,构建一个基于WiFi技术的无线局域网,智能终端等用户可以利用自带的WiFi功能接入该无线局域网,然后再将该无线局域网桥接至3G/4G网络中,从而实现各个智能终端设备对3G/4G网络带宽的共享。 1. 3G/4G路由器设计方案 本路由器的设计是基于三个模块来实现的,分别为3G模块、WiFi模块和Linux硬件平台,如图1所示。3G模块的功能是利用运营商的无线数据卡进行PPP拨号,使得路由器能通过运营商网络连接至互联网。WiFi模块的功能是使得无线网卡工作在AP(Access Point)模式,并配置动态主机配置协议的脚本文件,来建立一个2.4 GHz的WiFi无线局域网。Linux硬件平台模块的功能主要有两个方面,一方面要支持无线网卡和无线数据卡的驱动,另一方面要通过嵌入式Linux系统中的iptables数据包过滤系统将无线局域网和3G/4G网络连通。智能终端等设备通过WiFi信道接人到该路由器所提供的无线局域网中,分配到一个IP地址之后,则通过该无线局域网的网关进行数据包的接收和发送,而该网关则通过3G/4G模块上的网络拨号接口来接收和发送数据包至3G/4G 网络,从而实现了该路由器的设计方案。 图1 3G/4G路由器设计方案图 2. 3G/4G路由器硬件结构 根据3G/4G路由器设计方案,其硬件结构的三大模块分别采用深圳天谟公司生产的Devkit8500D评估板、华为公司的E392型无线上网卡和TP-Link公司的TL-WN821N型无线网卡。 Devkit8500D评估板的基本结构如图2所示。该硬件平台采用的是TI公司的DM3730微处理器。

debian linux系统开机启动项管理

Debian linux系统开机启动项的管理 Table of Contents 1. 关于LINUX 的启动 (2) 1.1 LINUX的关键启动脚本 (2) 1.2 LINUX启动SHELL脚本的一般书写规则 (3) 1.3开机启动的其他方法 (4)

1. 关于linux 的启动 1.1 linux的关键启动脚本 Linux的第一个进程是0号进程,一般认为0号进程创建了1号进程,1号进程建了所有的kernel进程,1号进程是所有进程的祖先。1号进程又称init进程,init进程是所有进程之父。 init读取/etc/inittab,以下是debian系统的inittab,init就是读取这个文件获取的第一个脚本,请注意里面的粗体字,会对您理解linux的运行有一定的帮助。 # /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. 默认的运行等级2 是多用户形式,这个数字也可以是1获其他的数字,关于运行等级,请见下文。在终端下,直接执行runlevel看到当前系统的默认运行等级。 id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. 下面的命令是第一个执行的,除非是在紧急模式下启动。 可以看到,第一个运行的程序是/etc/init.d/rcS,也就是说rcS就是我们系统的初始化脚本。rcS是系统的初始化脚本,而在rcS文件中,直接执行了rc程序,在rc程序中,会执行当前系统默认运行等级下的所有要运行的脚本,这些脚本存放在rc?.d文件夹中(“?”是一个数字,运行等级是2的话就是rc2.d文件夹),在rc?.d文件夹中是以{K或S}{num}{name}命名的链接,这些链接至/etc/init.d/文件夹下的脚本,如果是K,那么意味着向/etc/init.d/下对应name的脚本传入stop 参数,如果是S开头的链接,意味着传入start参数 si::sysinit:/etc/init.d/rcS …到此,和我们的开机启动关系密切的代码已经结束了,当然,不排除在用户登录之后有针对用户的开机启动项目 # What to do in single-user mode. ~~:S:wait:/sbin/sulogin …

基于嵌入式linux计算器的实现

课程设计报告 课程设计名称:嵌入式系统综合课程设计 课程设计题目:基于嵌入式linux计算器的实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

目录 第1章系统分析 (1) 1.1需求分析 (1) 1.2硬件分析 (1) 1.2.1 实验环境 (1) 1.3软件分析 (2) 1.3.1 操作系统简介 (2) 1.3.2 开发技术简介 (2) 第2章系统设计 (4) 2.1操作系统移植 (4) 2.2系统模块设计 (4) 2.3函数设计 (4) 2.4关键流程 (5) 2.4.1 系统主流程 (5) 2.4.2 功能按键流程图 (5) 第3章QT程序移植 (7) 3.1建立交叉编译环境 (7) 3.2Q T源文件的编译 (8) 3.3Q T应用的移植 (8) 第4章系统调试及运行 (9) 4.1调试分析 (9) 4.2结果分析 (10) 参考文献 (11) 附录 (12)

第1章系统分析 1.1 需求分析 课程设计内容和要求: 设计一个简单的计算器,能够进行加、减、乘、除等数学操作。 (1)利用嵌入式linux和Qt,在ARM9上实现。 (2)界面尽可能友好、美观。 这是一个简单的计算器软件,功能为加、减、乘、除等,在嵌入式设备上实现,使用方便,性能可靠,基于ARM内核的微处理器在市场上绝对处于领导地位,因此该类项目拥有庞大的市场。 1.2 硬件分析 将编写好的程序Makefile后,通过Vivi烧入到博创UP-Star2410开发板上,开机运行即可。 1.2.1 实验环境 实验环境是:win7下安装虚拟机,在虚拟机上安装linux(ubuntu11.10)开发板是:博创UP-Star6410,开发板。 软件资源: (1)内核版本linux 2.6.21 (2)BootLoader:U-boot (3)文件系统:Cramfs+Yaffs2 硬件资源: (1)基于ARM1176JZF-S内核的SAMSUNG S3C6410处理器 (2)系统工作频率为533/667MHz (3)256MB Nand Flash、8MB NorFlash (4)256MB Mobile DDR RAM

linux(凝思) 网卡绑定方法

linux系统里面有一个内置的nameif的命令可以实现网卡绑定的功能 方法:可以写一个脚本,然后将脚本设置为开机启动即可。 参考如下: (1) 首先写一个脚本,脚本路径为/etc/rc.d/init.d,脚本内容如下(针对两块网卡): #cat /etc/rc.d/init.d/nameif.sh #!/bin/sh /sbin/nameif -s a0 00:E0:81:D3:30:74 /sbin/nameif -s a1 00:E0:81:D3:30:76 /sbin/nameif -s eth0 00:E0:81:D3:30:74 /sbin/nameif -s eth1 00:E0:81:D3:30:76 注释:此处的MAC为举例用的,应根据自己机器的实际情况来编写脚本。 (2) 写完脚本后,给脚本加权限 chmod 777 /etc/rc.d/init.d/nameif.sh (3) 然后在对应的启动级别里做一个开机启动的连接,注意,nameif脚本需要执行在 network网络启动之前,否则无法生效 #cd /etc/rc.d/rc3.d #ln -s /etc/rc.d/init.d/nameif.sh S016nameif #cd /etc/rc.d/rc5.d #ln -s /etc/rc.d/init.d/nameif.sh S016nameif 注释:由于内核里面事先记录了eth[0-1*]的网卡名字信息,若直接对eth*进行绑定的话,会存在网卡名字占用的问题,由此会造成设置无法生效。所有上面所写的脚本里面首先将网卡的MAC地址赋给其他的名字,然后在重新指定给eth*,即可解决这个问题

linux开机启动脚本的顺序

linux开机启动脚本的顺序 如果服务器重启之后需要手工开启许多服务、工作及以后的维护相对比较繁琐、特地总结了下linux下开机自动启动脚本所涉及的知识和方法、如下: 1、相关基础知识点 1)redhat的启动方式和执行次序是: 加载内核 执行init程序 /etc/rc.d/rc.sysinit # 由init执行的第一个脚本 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 /etc/rc.d/rc.local #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中) /sbin/mingetty # 等待用户登录 在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括: 调入keymap以及系统字体 启动swapping 设置主机名 设置NIS域名 检查(fsck)并mount文件系统 打开quota 装载声卡模块 设置系统时钟 等等。 /etc/rc.d/rc则根据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。凡是以Kxx开头的 ,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx 从小到大来执行。(其中xx是数字、表示的是启动顺序)例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用 /etc/rc.d/rc3.d/下的脚本。 值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中 的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。 init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的 action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。 至此,LINUX的启动结束。 2)init运行级别及指令 一、什么是INIT: init是Linux系统操作中不可缺少的程序之一。

Linux系统如何设置开机自动运行脚本

在Windows 下,我们有很多方法可以设置开机启动,但在Linux 系统下我们需要如何操作呢? Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟,我更多是玩命令)。下面我们就介绍三种简单但可行的开机启动设置方法。 方法一:修改/etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。 但是,首先需要确认你有运行这个文件的权限。 $ chmod +x /etc/rc.d/rc.local 为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。 $ vim auto_run_script.sh #!/bin/bash date >> /home/alvin/output.txt hostname >> /home/alvin/output.txt 保存退出后,再给它赋予可执行权限: $ chmod +x auto_run_script.sh 然后,我们再将脚本添加到/etc/rc.d/rc.local文件最后一行: $ vim /etc/rc.d/rc.local /home/alvin/auto_run_script.sh 接下来,我们就可以试试效果了。直接重启系统就可以了: $ sudo reboot 重启之后,就会在家目录下看到脚本执行的结果了。 方法二:使用crontab 大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。 我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作@reboot,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。 那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过crontab -e来设置。 $ crontab -e @reboot /home/alvin/auto_run_script.sh 然后,直接重启即可。运行的效果跟上面类似。 方法三:使用systemd 服务 以上介绍的两种方法,在任何 Linux 系统上都可以使用。但本方法仅适用于systemd系统。如何区分是不是systemd系统?很简单,只需运行ps aux命令,查看pid为1的进程是不是systemd 。 为了实现目的,我们需要创建一个 systemd 启动服务,并把它放置在/etc/systemd/system/目录下。

在linux下设置开机自动启动程序的方法

下面用自启动apache为例; 自启动脚本: /usr/local/apache2/bin; ./apachectl start 文件位于/etc/rc.d/init.d下,名为apached, 注意要可执行. #chmod +x /etc/rc.d/init.d/apached //设置文件的属性为可执行 #ln -s /etc/rc.d/init.d/apached /etc/rc3.d/S90apache //建立软连接,快捷方式 #ln -s /etc/rc.d/init.d/apached /etc/rc0.d/K20apache 在Red Hat Linux中自动运行程序 1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或/etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑/etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。 2.登录时自动运行程序 用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的一个。 因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。 3.退出登录时自动运行程序 退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout 中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份*.c 文件。 4.定期自动运行程序 Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。 例如,建立文件crondFile,内容为"00 9 23 Jan * HappyBirthday",运行"crontab cronFile"命令后,每当元月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。 5.定时自动运行程序一次 定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令: $ at 12:00 at>mailto Roger -s ″Have a lunch″ < plan.txt

Linux下配置jdk+tomcat【附:设置tomcat自动启动,jsvc方式】

Linux下配置jdk+tomcat 操作系统 CentOS5.3 所需软件包 jdk-6u4-linux-i586-rpm.bin apache-tomcat-6.0.29.tar.gz 注意:选择用什么包的时候要注意,jdk包最好选择较高版本,否则tomcat可能无法启动以本文为例,安装tomcat6.0和5.0时,如果用的是jdk1.4版本则tomcat无法启动,而用jdk1.5之后的版本就可以 1、安装JDK 1.安装包拷贝到/home目录下(当然别的目录也可以,个人习惯) 进入安装目录 [root@radius2 ~]#cd /home ---将jdk程序包复制到/usr/local目录下 [root@radius2 home]#cp jdk-6u4-linux-i586-rpm.bin /usr/local ---转到/usr/local目录下 [root@radius2 home]#cd /usr/local 给所有用户添加可执行的权限 [root@radius2 local]#chmod +x jdk-6u4-linux-i586-rpm.bin [root@radius2 local]#./jdk-6u4-linux-i586-rpm.bin ----此时会生成文件jdk-6u4-linux-i586-rpm,同样给所有用户添加可执行的权限 [root@radius2 local]#chmod +x jdk-6u4-linux-i586-rpm 安装程序 [root@radius2 local]#rpm -ivh jdk-6u4-linux-i586-rpm 出现安装协议等,按接受即可。 2.设置环境变量: vi /etc/profile 编辑/etc/profile文件。在文件末尾加入 export JA VA_HOME=/usr/java/jdk1.6.0_23 export PA TH=$JA V A_HOME/bin:$JA V A_HOME/jre/bin:$PATH export CLASSPATH=.:/usr/java/jdk1.6.0_23/lib:/usr/java/jdk1.6.0_23/jre/lib:$CLASSPATH 保存退出后可执行以下命令即时生效 [root@radius2 local]#source /etc/profile 3.检查JDK是否安装成功。 #java -version 如果看到JVM版本及相关信息,即安装成功! 3、安装TOMCAT

Linux中把weblogic做成开机自动启动

1.创建/etc/init.d/weblogic文件,文件内容如下: #!/bin/bash # chkconfig: 35 99 05 #description: Weblogic Server #Please eidt the Variable export BEA_BASE=/u02/weblogic/Oracle/Middleware export BEA_HOME=$BEA_BASE/user_projects/domains/base_domain export BEA_LOG=/var/log/weblogic.log export PA TH=$PATH:$BEA_HOME/bin BEA_OWNER=weblogic start(){ echo -n "starting weblogic..." su - "$BEA_OWNER"< $BEA_LOG 2>&1 & EOO } stop(){ echo -n "stop weblogic..." su - "$BEA_OWNER"<> $BEA_LOG EOO } case "$1" in start) touch /var/lock/weblogic start echo "OK" ;; stop) rm -rf /var/lock/weblogic stop echo "OK" ;; restart) stop sleep 3 start ;; *) echo "$0{start|stop|reload|restart}" exit 1 ;; esac exit 0

LINUX 服务器下流量监控报警系统SHELL 脚本实现

关键词:云计算;网络信息安全;服务器集群;负载均衡 ddos 中图分类号:tp393 文献标识码:a 文章编号:1009-3044(2015)09-0061-02 分布式拒绝服务攻击采取的攻击手段就是分布式的,在攻击的模式改变了传统的点对点的攻击模式,使攻击方式出现了没有规律的情况,而且在进行攻击的时候,通常使用的也是常见的协议和服务,这样只是从协议和服务的类型上是很难对攻击进行区分的。在进行攻击的时候,攻击数据包都是经过伪装的,在源ip 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的。这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的。 此流量监控报警系统是在centos 7 版本下使用shell脚本撰写的,通过邮件报警。现在智能手机的普及,邮件也能像短信即使告警,通知服务器运维人员。此脚本包包含主程序、子程序、配置文件、邮件引擎、输出日志等。 主程序:作为整个脚本的入口,是整个系统的命脉。 配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。 子程序:这个才是真正的监控脚本,用来监控各个指标。 邮件引擎:是原本是由一个php程序来实现,它可以定义发邮件的服务器、发邮件人以及收邮件人。但是如果发表在本论文里,会导致篇幅过长,所以调用了系统自带的mailx邮件引擎。 输出日志:整个监控系统要有日志输出。 我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件。 程序架构: monitor/bin/main.sh monitor/conf/mon.conf monitor/mail/mail.sh 其中bin下是主程序,conf下是配置文件,mail下是邮件引擎,log下是日志及需要发送的邮件内容。此脚本包中的程序是使用的相对路径,如果使用该脚本包请按照以上程序架构对应的路径。 1)main.sh #! /bin/bash export send=1 # #报警控制开关## if [ $last_dir == "bin" ]; then conf_file="../conf/mon.conf" else echo "you shoud cd bin dir" exit fi exec 1>>../log/main.log 2>>../log/main_err.log sleep 60 ##一分钟控制时间,一分钟检测一次## if grep -q 'to_mon_traffic=1' $conf_file; then ##当前10秒瞬时流量及10秒平均流量,以防单一秒内瞬时流量骤增,导致误判## fi if [ $traffic_value > 1 ] && [ $send == 1 ]; then

linux学习-将seafile启动脚本设置为开机启动服务

有时候,我们安装的linux软件和程序不是通过yum安装,而是通过编译或者其他方式安装。有时需要将程序设置为服务,达到开机启动的目的。 我在公有云的与服务器上搭建了seafile网盘,当我重启云服务器的时候,seafi le的程序不会自动启动,需要我在相关目录下执行脚本,才能启动。 将两个脚本使用软连接到/root/目录下,方便执行 现在采用服务的方式,将这这两个脚本加入开机启动 创建systemd 服务文件/etc/systemd/system/sea file.service vim /etc/systemd/system/seafile.service =======================内容如下========================

[Unit] Description=Seafile # add mysql.service or postgresql.service depending on your database to the line below After=network.target [Service] Type=oneshot ExecStart=/home/cloud_storage/seafile-server-latest/seafile.sh start ExecStop=/home/cloud_storage/seafile-server-latest/seafile.sh stop RemainAfterExit=yes User=seafile Group=seafile [Install] WantedBy=multi-user.target 这个文件由三个部分组成:Unit\Service\Install [Unit]主要是为了解决依赖关系。常见的添加Requires、After,如果这个依赖是可选的,那么是Wants、After。依赖关系通常被用在服务(service)而不是(t arget)上,所以上述的httpd所依赖的仅仅是一些target,因而也就没有Requi res和Wants出现。 [service]可选择几种不同的服务启动方式,启动方式通过Type参数进行设置。Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。 如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。 Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置RemainAfterExit=yes 使得systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type=notify:与Type=simple 相同,但约定服务会在就绪后向systemd 发送一个信号。这一通知的实现由libsystemd-daemon.so 提供。

相关文档
最新文档