个人开发笔记整理

查看/关闭端口命令:
netstat -no :查看所有端口,带端口的pid
tasklist :查看所有的进程,带端口的pid
taskkill -f -pid 3824 :强制杀死进程,f代表强制,3824是pid号,在任务管理器里也可以查看pid
查找指定的端口号
netstat -aon|findstr “8080”
查找指定的进程
tasklist|findstr “2448”
oracle字串转成时间函数:
TM>=TO_DATE(‘2014-09-13 00:00:00’, ‘yyyy-mm-dd hh24:mi:ss’)
设置表格边框的问题:
td中没有内容的时候,默认是不会显示td的边框,此时页面上显示的是一片空白,用户根本不知道这里其实有个的,并且页面也显得凌乱不堪,搜罗了下,总结了下面几种解决方法:
1、在单元格中加入一个空格。这样: 
2、直接在table里这样写:

看清了啊,border-collapse只能是collapse,虽然border-collapse还有separate,inherit属性。用这种方法可以把边框显示出来,但很郁闷的是—-它显示的是细边框。顺带一下separate和collapse吧,
separate:separate :  默认值。边框独立(标准HTML),跟没用这个属性时显示的一样。(inherit在我看来跟separate 没啥区别,也许是我眼拙,呵呵)
collapse :  相邻边被合并
相邻边被合并!默认时相邻边没有合并,所以就是 1+1=2。现在我们使用 border-collapse:collapse把我们合并了,所以宽度就是 1+1=1了出现细线边框了。
3、table { caption-side: top; width: auto; border-collapse: collapse; empty-cells: hide; }或者
table {width:100%;border-collapse: separate;empty-cells:show;}

不过,目前IE6.0持此属性,貌似只能在css2中使用。相应的脚本特性为emptyCells。
4、

这里能使边框显示出来的核心是 rules=”cols”
Google弹窗问题

%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default,删除web data文件即可
有关css:float的问题
Div设置float之后,不能被overflow所隐藏
Float之后的div与没有设置float的div间距失效,如要使间距生效,需加display:inline属性

此时右边的div所占的宽度的百分比不再是占父窗口的100%,而是左边div所在宽度剩下的宽度,即float之后div,元素以它为基准 Linux模块 Linux安装oracle 11g说明 1、安装依赖包 [root@oracledb ~]# yum -y install gcc gcc-c++ make binutilscompat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-commonglibc-devel libaio libaio-devel libgcclibstdc++ libstdc++-devel unixODBC unixODBC-devel 2、创建用户和组 [root@oracledb ~]# sysctl -p [root@oracledb ~]# groupadd -g 580 oinstall [root@oracledb ~]# groupadd -g 581 dba [root@oracledb ~]# useradd -u 550 -g oinstall -G dba oracle [root@oracledb ~]# passwd oracle 3、修改内核参数 [root@oracledb ~]# vi/etc/sysctl.conf #末尾添加如下 net.ipv4.ip_local_port_range= 9000 65500 fs.file-max = 6815744 kernel.shmall = 10523004 //该项一般不设置,保持系统持有的 kernel.shmmax = 6465333657 //该项一般不设置 kernel.shmmni = 4096 kernel.sem = 250 32000 100128 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_max=1048576 fs.aio-max-nr = 1048576 4、修改系统资源限制 [root@oracledb ~]# vi/etc/security/limits.conf #末尾添加如下 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 [root@oracledb ~]# vi/etc/pam.d/login session required pam_namespace.so #下面添加一条pam_limits.so session required pam_limits.so [root@oracledb ~]# vi/etc/profile #这个感觉没多大用 if [ USER=oracle];thenif[ SHELL = “/bin/ksh” ];then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 5、创建安装目录及设置权限 [root@oracledb ~]# mkdir /home/oracle/app/ [root@oracledb ~]# mkdir /home/oracle/oradata/ [root@oracledb ~]# chmod -R 777 /home/oracle/ [root@oracledb ~]# chown oracle.oinstall -R /home/oracle/ 6、设置oracle环境变量 [oracle@oracledb ~] vi /home/oracle/.bash_profile #用户配置文件
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=
ORACLE_BASE/product/11.2.0/dbhome_1 export PATH= PATH: ORACLE_HOME/bin export ROACLE_PID=orcl [oracle@oracledb ~]$ source .bash_profile #立即生效 7、安装oracle [root@oracledb~]# export LANG=en_US [root@oracledb~]# export LC_ALL=en_US [root@oracledb~]# unzip /media/linux.x64_11gR2_database_1of2.zip [root@oracledb~]# unzip /media/linux.x64_11gR2_database_2of2.zip [root@oracledb~]# xhost + #使所有用户都能访问图形桌面 [root@oracledb~]# su oracle [oracle@oracle~]#./media/database/runInstaller 安装问题解决 1、 不能创建目录 chown –R 777 /home/oracle 2、 乱码 3、 安装oracle11G,执行runInstaller时提示: 检查监视器: 监视器配置至少必须显示 256 种颜色 >>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。 未通过

su root

xhost +

提示:xhost: unable to open display “”

export DISPLAY=:0.0

# xhost +
提示:access control disabled, clients can connect from any host

切换oracle用户
# su – oracle

再执行# sh runInstaller

4、安装oracle11.1.0后运行sqlplus出现错误:
Message file sp1.msb not found
解决方法:没有配置环境变量或者配置错误,在用户目录下修改.bash_profile或者.bashrc文件
Linux常用命令
pwd 查看当前目录
/etc/init.d/iptables status 查看端口
/etc/rc.d/init.d/iptables save 保存设置
/etc/rc.d/init.d/iptables restart 重启防火墙
/sbin/iptables -I INPUT -p tcp –dport 1521 -j ACCEPT 开放防火墙允许端口
/sbin/iptables -I INPUT -p tcp –dport 1158 -j ACCEPT
在字符界面输入startx或init 5即可进入图形界面
设置默认进入字符模式:
/etc/inittab id:3:initdefaul中的3改为5
硬盘安装的linux,在系统图形界面启动后,可使用Ctrl+Alt+F1~6切换到字符界面,再用Ctrl+Alt+F7切换到图形界面
通过修改配置文件 /boot/grub/grub.conf,在kernal参数后面添加vga=ask,每次启动时选择分辨率,或者ask=确定分辨率,使用固定分辨率
Logout在图形化界面用不了,至能在命令行模式下使用
开启oracle服务:
登录sqlplus,sqlplus /nolong;
连接oracle,connect / as sysdba;
启动数据库实例,startup;//这个是sqlplus命令
Exit,退出启动监听listener control,lsnrctl start//这个是oracle工具命令,在sqlplus环境下无法执行
查询dmp文件,字符集类型,cat 22.dmp|od -x|head -1|awk ‘{print 2 3}’|cut -c 3-6
select userenv(‘language’) from dual; 该语句可以查看服务端的使用的字符集
修改数据库字符集:
connect system/oracle9i as sysdba
shutdown immediate
startup mount
alter system enable restricted session ;
alter system set JOB_QUEUE_PROCESSES=0;
alter system set AQ_TM_PROCESSES=0;
alter database open ;
alter database character set internal_use ZHS16GBK ;
shutdown immediate
startup
修改客户端字符集(注意,oracle工具属于客户端工具-发起客户端进程)
Windows:echo %NLS_LANG%

常用中文字符集

set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK //该方式在当前回话中有效

常用unicode字符集

set NLS_LANG=american_america.AL32UTF8
可以通过修改注册表键值永久设置
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
Unix:

常用unicode字符集

export NLS_LANG=american_america.AL32UTF8

常用中文字符集

export
可以编辑 bash_profile 文件进行永久设置
vi .bash_profile
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK”

or export NLS_LANG=”Simplified Chinese_china”.ZHS16GBK

使 bash_profile 设置生效

source .bash_profile
2. 查看 NLS_LANG 的方法
Windows使用:
echo %NLS_LANG%
Unix使用:
env|grep NLS_LANG

后台执行的程序:ps –aux

Linux关闭防火墙命令

1) 永久性生效,重启后不会复原
开启:chkconfig iptables on
关闭:chkconfig iptables off

2) 即时生效,重启后复原
开启:service iptables start
关闭:service iptables stop

3)在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

修改IP配置文件:vi /etc/sysconfig/network-scrips/ifcfg-eth0
网卡接口关闭与激活
[root@localhost ~]# ifdown eth0 #关闭网络
[root@localhost ~]# ifup eth0 #启动网络
网络服务启动与关闭
方法一:
[root@localhost ~]# service network stop #关闭网络服务
[root@localhost ~]# service network start #启动网络服务
[root@localhost ~]# service network restart #重启网络服务
方法二:
[root@localhost ~]# /etc/init.d/network stop
[root@localhost ~]# /etc/init.d/network start
[root@localhost ~]# /etc/init.d/network restart
网卡状态查询
[root@localhost ~]# service network status
Java模块
JDBC
个人理解:若JDBC进程终止,则数据库会释放连接;就好比conn.close()就是告诉数据库释放连接;因为整个进程宕掉了,那个OS会回收该进程占用的所有资源;
数据库驱动Driver接口大致如下:Class Driver{
DriverManger.register(new Driver());
}
Class.forName()的理解
Class.forName(“xx.xx.xx”);该方法用于加载class类,会执行xx.xx.xx里的静态方法;
在java的世界里创建对象的方式有两种:1、使用new关键字;2、使用newInstance();主要区别是前者是直接创建对象,后者是使用类加载器(前提条件必须:1、这个类已经加载;2、这个类已经连接了)
现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造

netstat –an 命令结果详解
1.本地IP后面接的数字是本机通信用的端口
2.外部IP一般来说是正常的,你访问网站,打开聊天工具,都是要连接外网服务器的
3.是的,IP后面的就是开放的端口,HTTP协议一般是用于浏览器和网站服务器之间的通讯
跨域相关
相关概念
跨域:同一个域名下的站点不能访问其它域名下的站点,也就是两者不可数据交互;
超链接:指从一个网页指向一个目标的连接关系,它允许两个不同站点之间的连接;

CSS样式问题
图片路径引用问题
在css样式文件中url()路径问题,最好从webroot目录开始,不要用相对路径,即使img图片和css文件在同一个目录下;
经验总结:在节点下使用相对路径无效,必须从webroot目录下开始寻找,在.css文件中可以使用相对路径,但是不能用从webroot目录下开始作为img图片路径;
DIV边框圆角实现(hack css实现)
.round{
• border: 2px solid #C0C0C0;
• -moz-border-radius: 10px; /支持老版本火狐-moz-border-radius-topright: 10px /
• -webkit-border-radius: 10px; /支持老版本谷歌-webkit-border-top-left-radius: 10px /
• border-radius: 10px; /支持IE9+ border-top-left-radius:10px/
• position:relative;
• padding:5px;
• background:#FFF;
• z-index:2;
• width:330px;
• height:200px;
• behavior: url(iecss3.htc) /兼容IE7,IE8或者引入html5.js文件也行/
• }

用CSS调整scrollbar(滚动条)的配色
如果仅要求IE浏览器,可以通过调整CSS的方式,来给滚动条换色。
代码如下:
.uicss-cn
{
height:580px;overflow-y: scroll;
scrollbar-face-color:#EAEAEA;
scrollbar-shadow-color:#EAEAEA;
scrollbar-highlight-color:#EAEAEA;
scrollbar-3dlight-color:#EAEAEA;
scrollbar-darkshadow-color:#697074;
scrollbar-track-color:#F7F7F7;
scrollbar-arrow-color:#666666;
}

Tomcat日志问题
对多个项目要对webAppRootKey进行配置,这里主要是让log能将日志写到对应项目根目录下,如我配置这两个项目的webAppRootKey为



webAppRootKey
webapp.root

Windows server FTP服务搭建过程
Windows Server 2008安装配置FTP全过程
前提:Windows2008安装了IIS,且安装时有选择了安装FTP服务。
安装配置FTP步骤:
1、在D盘新建文件夹gevinftp
2、打开IIS管理器,右击网站–添加FTP站点,下一步。如图:

3、绑定IP和SSL设置,记得选择“无”,下一步。如图:

4、配置身份验证和授权信息,然后选择完成。如图:

5、新建一个FTP User组,并添加一个新用户gevin,如图:

6、将用户gevin的Users组去掉,重新隶属于FTP User组,如图:

7、配置D:\gevinftp的权限,允许新用户gevin对该文件夹完全控制,如图:

8、在D:\gevinftp目录下新建文件gevin.me_root
9、在其他电脑访问ftp://192.168.0.22,即可看到刚才新建的文件,如图:

另外,这个只是其中的一种配置方法,需求比较简单,一个FTP站点对应一个帐号。如果要做成FTP服务器,即需要使用另外一种配置方式,采用与本地用户绑定的方式,每个用户对应一个文件夹,且每个用户只能访问对应的文件夹,达到隔离用户的效果。

查询表空间的大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name

增加表空间大小的四种方法
Meathod1:给表空间增加数据文件
ALTER TABLESPACE app_data ADD DATAFILE
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF’ SIZE 50M;

Meathod2:新增数据文件,并且允许数据文件自动增长
ALTER TABLESPACE app_data ADD DATAFILE
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF’ SIZE 50M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

Meathod3:允许已存在的数据文件自动增长
ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF’
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

Meathod4:手工改变已存在数据文件的大小
ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF’
RESIZE 100M;
作者“To_Be_Monster_Of_IT”

Oracle创建表空间
/分为四步 /
/第1步:创建临时表空间 /
create temporary tablespace user_temp
tempfile ‘D:\oracle\oradata\Oracle9i\user_temp.dbf’
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;

/第2步:创建数据表空间 /
create tablespace user_data
logging
datafile ‘D:\oracle\oradata\Oracle9i\user_data.dbf’
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;

/第3步:创建用户并指定表空间 /
create user username identified by password
default tablespace user_data
temporary tablespace user_temp;

/第4步:给用户授予权限 /
grant connect,resource,dba to username;

Oracle查看用户所在表空间
select username,default_tablespace from user_users;
alter user 用户名 default tablespace 新表空间;
select * from user_role_privs;
select * from user_tables;

oracle拓展表空间

select * from dba_tablespaces; –查看数据库表空间
select * from dba_data_files–查看表空间文件
select * from v$tempfile; –查看临时表空间文件
select * from dba_temp_files; –查看临时表空间

第一步:确认是否自动扩展打开
SELECT file_id, file_name, tablespace_name, autoextensible, round(bytes/(1024*1024),0) total_space ,increment_by
FROM dba_data_files
WHERE tablespace_name = ‘JINRILOG’
order by file_id desc;
第二步:尝试resize文件大小
alter database datafile ‘S:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF’
resize 100000M;
第三步:如果,步骤二报错,增加数据文件
alter tablespace jinrilog add datafile
‘S:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG02.DBF’ size 30g;
第四步(可不设):设置表空间自动扩展
alter database datafile ‘\oracle\oradata\anita_2008.dbf’ autoextend on
next 100m maxsize 10000m
如果想不限制最大容量可以这样设定
ALTER TABLESPACE ‘TBS_NAME’ ADD DATAFILE ‘C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ex_data’ SIZE 10240M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED ;
或者
ALTER TABLESPACE ‘TBS_NAME’ ADD DATAFILE ‘C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ex_data’ SIZE 10240M AUTOEXTEND ON NEXT 50M ;

Skyline地形文件MPT发布流程
以下内容介绍如何把一个数据都存放在本地的fly文件改成从服务端读取,包括fly文件也从服务端,这样做是为了能是程序与数据分离,减少部署工作
首先介绍使用TerraGate部署mpt
1.首先安装TerraGate,安装完成后打开TerraGate Manager,启动地形服务(Terrain Service),发布MPT就靠这个了,正常的话如下图,如果地形服务不正常,可以看我的另一篇文章(http://www.cnblogs.com/cannel/archive/2013/02/20/2918830.html),看是否同一个问题

PS1:地形服务真的是个windows服务,在windows服务列表能看到,名称是TerraGate
2.在TerraGate Manager的菜单Settings》Terrain Service,进行设置
第一是Gereral分页,TCP Port换一个,最好不要用默认的80

在Terrain Database Directories分页,把mpt文件所在的目录添加进去

点确定,完成设置
3.在TEP中加载发布的mpt
加载mpt的格式如下图,cc.mpt代表mpt文件名,@后面的是TerraGate所在的IP和刚才设置的端口

Oracle夸用户模式访问
方法一:
1向用户B授予查看用户A表的权限
grant select on A.test1 to B;
2 查看
conn b/*
select * from a.test1;
方法二:通过dblink访问A用户下表
1 B用户下创建连接A用户的dblink,如:orcl
2 查看
conn b/*
select * from test1@orcl

默认的情况下,oracle里面的用户A,要访问用户B的表需要带用户B的前缀,如访问用户B的 user表,需要这样访问 select * from B.user;如果想要不添加用户前缀,需要这样处理:
1.用视图 create view user select * from B.user;
2.使用同义词:
grant CREATE SYNONYM to user01; –使用DBA或者有权限的用户授权
create synonym user for B.user;
备注:前提都是需要使用B用户对A用户进行表访问的授权
grant select on user to user01;

Tomcat报错 out of permanent
修改tomcat是bin目录下的catalina.sh文件中的配置,但是yum安装的tomcat此文件的内容为空,将配置项 JAVA_OPTS=” -XX:PermSize=512M -XX:MaxPermSize(www.111cn.net)=1024m” 加进 catalina.sh文件,重启tomcat,无效。
搜索JAVA_OPTS字符串找到tomcat的配置文件位置
find /etc |xargs grep “JAVA_OPTS”from:http://www.111cn.net/sys/CentOS/72008.htm

catalina.sh下为:
JAVA_OPTS=”$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m”

1、手动设置MaxPermSize的大小,vim TOMCATHOME/bin/catalina.shecho"UsingCATALINABASE: CATALINA_BASE”,在此之上加入:JAVA_OPTS=”-server -XX:PermSize=64M -XX:MaxPermSize=128m。

2、将多应用之间的相同的jar分离出来,放置 TOMCATHOME/shared/lib { TOMCAT_HOME }/conf/catalina.properties文件中shared.loader= catalina.base/shared/lib, {catalina.base}/shared/lib/*.jar

也可以将公用的jar全部放置${ TOMCAT_HOME }/lib包下。

这样子就可以减少jar重复加载占用空间内存了。

Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
Posted by 破冰 on 2013-5-3 17:54 Friday
启动第一步--加载BIOS
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
启动第二步--读取MBR
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
启动第三步--Boot Loader / Grup
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
启动第四步--加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
启动第五步--用户层init依据inittab文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多。
启动第六步--init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的。
启动第七步--启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
启动第八步--执行不同运行级别的脚本程序(/etc/rc.d/rc RUNLEVEL #RUNLEVEL为缺省的运行模式 )
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
启动第九步--执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:

This script will be executed after all the other init scripts.

You can put your own initialization stuff in here if you don’t

want to do the full Sys V style init stuff.

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
启动第十步--执行/bin/login程序,进入登录状态

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

漫长的启动过程结束了,一切都清静了…
其实在这背后,还有着更加复杂的底层函数调用,等待着你去研究…本文就算抛砖引玉了:)
本文参考了如下文章,精炼荟萃而成:
http://bbs.chinaunix.net/thread-835918-1-1.html
http://hi.baidu.com/fembed/blog/item/b9f0881f51145866f624e4be.html
http://baike.baidu.com/view/9485.htm
标签: inittab Linux启动 rc.sysinit
Filed under:Linux12931次阅读
Nginx使用的php-fpm的两种进程管理方式及优化
nginx启动,重启,关闭命令详解
find命令参数详解
linux su和sudo命令的区别
Linux下设置环境变量的方法export PATH

Tomcat开机启动
方法一:
Vi /etc/init.d/tomcat

!/bin/bash

tomcat startup script for the Tomcat server

chkconfig: 2345 80 20

description: start the tomcat service

Source function library

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

prog=tomcat
JAVA_HOME=/usr/java/jdk1.6.0_45
export JAVA_HOME
CATALINA_HOME=/usr/tomcat/apache-tomcat-6.0.44
export CATALINA_HOME

case “ 1instart)echoStartingTomcat CATALINA_HOME/bin/startup.sh
;;

stop)
echo “Stopping Tomcat…”
$CATALINA_HOME/bin/shutdown.sh
;;

restart)
echo “Stopping Tomcat…”
CATALINAHOME/bin/shutdown.shsleep2echoechoStartingTomcat CATALINA_HOME/bin/startup.sh
;;

*)
echo “Usage: $prog {start|stop|restart}”
;;
esac
exit 0
说明:
这里的启动脚本可以把它分为3个部分,第一部分是申明启动脚本和注释,第二部分是定义路径的变量,第三部分是一个case…in条件选择结构。

第一部分
1)因为是个shell脚本,所以开始必须要有#!/bin/bash这一行,这里表示使用的shell是bash。
2)# chkconfig: 2345 80 20是让chkconfig命令能够识别这个启动脚本,必须要有,其余带#的都是注释说明。
3). /etc/rc.d/init.d/functions是在当前shell下执行functions这个文件,而不是在子shell中执行。它类似于库函数,后面的启动脚本可能会调用functions内的基础函数。

第二部分
1)从prog=tomcat开始,设定了3个变量,使用prog定义脚本名称,JAVA_HOME定义JDK安装目录,CATALANA_HOME定义tomcat安装目录。
2)export命令是使定义的变量在子shell中也可以使用。

第三部分
1)第三部分是一个case条件选择结构,语法结构如下:
case 字符串 in
值1 )
操作 ;;
值2 )
操作 ;;
值3 )
操作 ;;

*)
操作 ;;
esac
2) 1shellshell 1,第二个替换 23) CATALANA_HOME/bin/startup.sh表示启动tomcat。
4)$CATALANA_HOME/bin/shutdown.sh表示停止tomcat。
5)sleep 2 表示休眠2秒。
6)exit 0 表示退出。

添加完毕之后,给其增加可执行权限:chmod +x /etc/init.d/tomcat.

之后就是将这个shell文件的link连到/etc/rc2.d/目录下。linux的/etc/rcX.d/目录中的数字代表开机启动时不同的run level,也就是启动的顺序,Ubuntu9.10下有0-5六个level,不能随便连到其他目录下,可能在那个目录中的程序启动时Tomcat所需要的一些库尚未被加载,用ln命令将tomcat的链接链过去:ln -s /etc/init.d/tomcat /etc/rc2.d/S16tomcat。rcX.d目录下的命名规则是很有讲究的,更具不同需要可能是S开头,也可能是K开头,之后的数字代表他们的启动顺序,详细看各自目录下的Readme文件

接下来就是把这个脚本设置成系统启动时自动执行,系统关闭时自动停止,使用如下命令:chkconfig –add tomcat。如果chkconfig没有安装,则使用apt-get 或者yum之类的程序进行安装,一般服务器版本的Linux都已经自带了

最后,就是reboot重启系统了。重启之后就会发现,你的Tomcat已经成功运行了

Oracle权限管理
  一、创建
  sys;//系统管理员,拥有最高权限
  system;//本地管理员,次高权限
  scott;//普通用户,密码默认为tiger,默认未解锁
  sys;//系统管理员,拥有最高权限
  system;//本地管理员,次高权限
  scott;//普通用户,密码默认为tiger,默认未解锁
  二、登陆
  sqlplus / as sysdba;//登陆sys帐户
  sqlplus sys as sysdba;//同上
  sqlplus scott/tiger;//登陆普通用户scott
  sqlplus / as sysdba;//登陆sys帐户
  sqlplus sys as sysdba;//同上
  sqlplus scott/tiger;//登陆普通用户scott
  三、管理用户
  create user zhangsan;//在管理员帐户下,创建用户zhangsan
  alert user scott identified by tiger;//修改密码
  create user zhangsan;//在管理员帐户下,创建用户zhangsan
  alert user scott identified by tiger;//修改密码
  四,授予权限
  1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限
  /管理员授权/
  grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限
  grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限
  grant create table to zhangsan;//授予创建表的权限
  grante drop table to zhangsan;//授予删除表的权限
  grant insert table to zhangsan;//插入表的权限
  grant update table to zhangsan;//修改表的权限
  grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)
  /管理员授权/
  grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限
  grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限
  grant create table to zhangsan;//授予创建表的权限
  grante drop table to zhangsan;//授予删除表的权限
  grant insert table to zhangsan;//插入表的权限
  grant update table to zhangsan;//修改表的权限
  grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)
  2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权
  /oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的/
  grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限
  grant drop on tablename to zhangsan;//授予删除表的权限
  grant insert on tablename to zhangsan;//授予插入的权限
  grant update on tablename to zhangsan;//授予修改表的权限
  grant insert(id) on tablename to zhangsan;
  grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update
  grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限
  /oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的/
  grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限
  grant drop on tablename to zhangsan;//授予删除表的权限
  grant insert on tablename to zhangsan;//授予插入的权限
  grant update on tablename to zhangsan;//授予修改表的权限
  grant insert(id) on tablename to zhangsan;
  grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update
  grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限
  五、撤销权限
  基本语法同grant,关键字为revoke
  基本语法同grant,关键字为revoke
  六、查看权限
  select * from user_sys_privs;//查看当前用户所有权限
  select * from user_tab_privs;//查看所用用户对表的权限
  select * from user_sys_privs;//查看当前用户所有权限
  select * from user_tab_privs;//查看所用用户对表的权限
  七、操作表的用户的表
  /需要在表名前加上用户名,如下/
  select * from zhangsan.tablename
  /需要在表名前加上用户名,如下/
  select * from zhangsan.tablename
  八、权限传递
  即用户A将权限授予B,B可以将操作的权限再授予C,命令如下:
  grant alert table on tablename to zhangsan with admin option;//关键字 with admin option
  grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似
  grant alert table on tablename to zhangsan with admin option;//关键字 with admin option
  grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似
  九、角色
  角色即权限的集合,可以把一个角色授予给用户
  create role myrole;//创建角色
  grant create session to myrole;//将创建session的权限授予myrole
  grant myrole to zhangsan;//授予zhangsan用户myrole的角色
  drop role myrole;删除角色
  /但是有些权限是不能授予给角色的,比如unlimited tablespace和any关键字/
  Oracle用户权限表就介绍到这里。

Oracle 更改用户名和密码
改oracle用户名是很常见的操作。下面为您详细介绍了修改oracle用户名的方法步骤,如果您对oracle用户名方面感兴趣的话,不妨一看。
在实际工作中,有时候需要修改用户名,而通常的做法是exp imp这样的方式,而如果数据量大的话exp imp的方式会很浪费时间,所以下面写上如何通过修改ORACLE基表的方式来修改用户名,按下面的步骤执行:
–直接修改底层表 USER 1windowscmd2sqlplus/nolog3SQL>connsys/lmis@lmisdxlocalassysdbasys4SQL>selectfromuser ; 找到 name为需要修改的用户的user#。
5、SQL> UPDATE USERSET NAME=’新用户名’ WHERE USER#=38;  
已更新 1 行。  
6、SQL> COMMIT;提交完成。  
7、SQL> ALTER SYSTEM CHECKPOINT;  
系统已更改。  
8、SQL> ALTER USER 新用户名 IDENTIFIED BY 新密码;  
此时会提示新用户不存在。  
SQL> ALTER USER 新用户名 IDENTIFIED BY 新密码   
*ERROR 位于第 1 行:ORA-01918: 用户’新用户’不存在  
9、SQL> ALTER SYSTEM FLUSH SHARED_POOL;  
系统已更改。  
10、SQL> ALTER USER 新用户 IDENTIFIED BY 新密码;  
用户已更改。  
11、测试连接  
SQL> CONN 新用户/新密码@lmisdx_local;  
已连接。  
12、SQL> SELECT * FROM TAB;  
查看新用户下是否有原用户的对象,包括表等。  
13、SQL> CONN / AS SYSDBA已连接。  
14、SQL> SHOW USER –查看当前连接用户  
为”SYS”  
15、SQL> SHUTDOWN IMMEDIATE --关闭数据库  
数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。  
16、SQL> STARTUP --启动数据库  
ORACLE 例程已经启动。……数据库装载完毕。数据库已经打开。  
17、可以看出没有再恢复为TEST  
SQL> SELECT USER#,NAME,PASSWORD FROM USER
WHERE USER#=38;

18、查看数据对象
SQL> SELECT * FROM TAB;

19、SQL >connsys/lmis@lmisdx_localas sysdba
已连接。
SQL> SHOW USERUSE
为”SYS”
–DROP USER 也没有问题
SQL> DROP USER TEST1 CASCADE; –删除以前的用户

Linux远程桌面设置
安装完Xmanager Enterprise 4之后,我们需要对服务器环境进行一些简单的配置才能进行远程登陆连接CentOS 6.4的桌面环境。

[root@localhost ~]# vi /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

将系统启动的级别设置为5。

编辑/etc/gdm/custom.conf文件。

[root@localhost ~]# vi /etc/gdm/custom.conf

GDM configuration storage

[daemon]

[security]

[xdmcp]
Enable=true
Port=177

[greeter]

[chooser]

[debug]

设置服务器端的防火墙,允许177端口的访问,添加iptables规格

[root@localhost ~]# vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m udp -p udp –dport 177 -j ACCEPT

重新启动服务器。

运行Xmanager Enterprise 4中的Xbrowser程序,点击新建,弹出新建会话属性,

填入主机IP,端口号为177,点击确定,

选择刚才建立的连接,右键打开,

等待一会之后,我们熟悉的Centos登陆界面就出来了,已经成功登陆。

原文出自【风信网】,转载请保留原文链接:http://www.ithov.com/linux/130208.shtml

centos 下安装JDK和tomcat
一、openJDK 的卸载
安装好的CentOS会自带OpenJdk,用命令java -version ,会有下面的信息:
javaversion “1.6.0”
OpenJDK Runtime Environment (build1.6.0-b09)
OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)
最好还是先卸载掉openjdk,在安装sun公司的jdk.
先查看rpm -qa | grep java
显示如下信息:
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
卸载:
rpm -e–nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
还有一些其他的命令
rpm-qa | grep gcj
rpm-qa | grep jdk
如果出现找不到openjdksource的话,那么还可以这样卸载
yum -y remove javajava-1.4.2-gcj-compat-1.4.2.0-40jpp.115
yum -y remove javajava-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
二、sun JDK 的安装
下载 jdk.bin
<1>从SUN下载jdk-1_5_0_14-linux-i586-rpm.bin或jdk-1_5_0_14-linux-i586.bin(安装java7 也一样,直接下载java7的bin文件就行)
在/usr下新建java文件夹,将安装包放在/usr/java目录下

mkdir /usr/java

< 2>安装JDK

cd /usr/java

①jdk-1_5_0_14-linux-i586-rpm.bin文件安装

chmod 777jdk-1_5_0_14-linux-i586-rpm.bin ← 修改为可执行

./jdk-1_5_0_14-linux-i586-rpm.bin ←选择yes同意上面的协议

第三步:配置环境变量
<1># vi /etc/profile
<2>在最后加入以下几行:/etc/opt/java/java6
JAVA_HOME=/usr/java/jdk1.6.0_45
JRE_HOME=/usr/java/ jdk1.6.0_45/jre
PATH= PATH: JAVA_HOME/bin: JREHOME/binCLASSPATH=: JAVA_HOME/lib/dt.jar: JAVAHOME/lib/tools.jar: JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
<3># reboot ← 重启机器配置生效 或者 使用source命令 source /etc/profile 后生效

Linux修改防火墙
vi /etc/sysconfig/iptables
重启防火墙:/etc/init.d/iptables restart
查看其它端口:/etc/init.d/iptables status
关闭防火墙:/etc/init.d/iptables stop

Linux中文支持

1)说明:
Windows的默认编码为GBK,Linux的默认编码为UTF-8。在Windows下编辑的中文,在Linux下显示为乱码。为了解决此问题,修改Linux的默认编码为GBK。
2)查看支持的字符集:

locale -a

3) 安装英文版默认的字符集配置为:

cat /etc/sysconfig/i18n

LANG=”en_US.UTF-8”
SYSFONT=”latarcyrheb-sun16”

4) 修改为中文字符集:

vi /etc/sysconfig/i18n

LANG=”zh_CN.GBK”
SUPPORTED=”zh_CN.UTF-8:zh_CN:zh”
SYSFONT=”latarcyrheb-sun16”

5) 执行如下命令或者重启即可生效。

source /etc/sysconfig/i18n

Oracle和sql server互联
工具:
1、 Oracle向SQLServer批量导入数据工具(SSMA for Oracle 5.2)
2、 Oracle sql developer工具将sql server 的数据转存到oracle中
详情网址:http://blog.csdn.net/caijing3210/article/details/7105313
http://blog.163.com/jiankun_liu/blog/static/18639277620134345541884/

iframe和父窗口交互
在iframe子页面获取父页面元素, 代码如下:
(‘#objld’,parent.document);   
在父页面获取iframe子页面的元素 ,代码如下:
(“#objid”,document.iframes(‘iframe’).document);
或者$(“iframe”).contents().find(“selector”)
获取父窗口的变量:top.变量
获取子窗口iframe中的变量:iframe.变量或者window.iframe[“id”].变量

Eclipse安装插件的4种方法
1、直接用Eclipse自带的安装插件的方法,在:“帮助”–>“安装软件”选项下。
2、link安装,方法是建一个links,里面建一个link文件把插件的路径配过去,稍微麻烦一点,而且有一个最大的缺点:就是把整个Eclipse复制到别的电脑后插件路径又要重新配置。
3、就是我们今天说的dropins安装方法(直接将插件的features和plugins放置在该目录,dropins文件夹与解压后的plugins文件夹之多只能有一层文件夹),此方法个人觉得最好,一方便安装,二方便卸载(删除即可),三无需配置路径,四方便转移到其它电脑。但就是不知道启动速度上是否有降低。
4、直接将插件的feature和plugins目录下的内容添加到Eclipse安装根目录的feature和plugins目录中;
Web插件截图功能实现
http://www.ncmem.com/products/scppro/demo/index.asp
http://www.cnblogs.com/xproer/archive/2010/12/05/1896778.html
VisualSVN Server导入Repository

1 问题的提出:SVN服务器换机器了,原来SVN服务器(为了便于后文描述,暂且称该机器为A)的Repository需要原样复制到新的SVN服务器(为了便于后文描述,暂且称该机器为B),原样复制 Repository ,是为了保持SVN内容不会因换了服务器而导致不同。那么在新SVN服务器B上需要将从A机器复制过来的 Repository 导入到VisualSVN Server中。步骤如下:

打开”Import Exist Repository…”菜单,找到Repository,选择该目录导入 即可。
2 如何在一台svn服务器的VisualSVN Serve端备份相同的Repository?
步骤: 先将要备份的Repository原样复制一份,如下图:

其中Repositories为原始的,CopyRepositories为原样复制的,即为Repositories的副本。
原始的Repositories内容为:

需将副本CopyRepositories中的WorkRepository目录更改一个其他的名字,如:CopyWorkRepository,否则在后续导入会提示已经存在的错误。更改WorkRepository目录名字后的,副本CopyRepositories的内容如下:

在VisualSVN Serve的Repositories节点上单击鼠标右键,弹出并选择如下菜单:

之后在弹出的对话框中选择刚才副本CopyRepositories/CopyWorkRepository目录,如下图:

单击“ok”关闭该对话框即可。此时可以看到VisualSVN Serve左侧树状视图Repositories中多出了一个子节点CopyWorkRepository,该子节点和WorkRepository内容一模一样,即是对WorkRepository的复制和备份。

visualSVN server库迁移
首先,VisualSVN Server Manager,包含两个路径,一个是安装路径,例如本机:C:\Program Files\VisualSVN Server,一个是库路径,例如本机:C:\Repositories,其中,Repositories中包括各项目文件及项目信息文件,重要的项目信息文件有authz和htpasswd,authz是目录访问权限控制文件,htpasswd是VisualSVN Server Manager用户和密码记录文件现,对VisualSVN Server Manager进行迁移,方法如下:

例如:
原服务器A,VisualSVN Server Manager
现服务器B,VisualSVN Server Manager
步骤:
1。拷贝A上Repositories文件夹到B上
2。打开B上VisualSVN Server Manager
3。右击Repositories,所有任务中选择import existing repository
4.选择步骤1中的项目文件夹进行导入,直到所有项目导入完成
5。替换authz和htpasswd文件,使得服务器B上VisualSVN Server Manager中的用户及用户权限跟之前的一致

第一次迁移时,没有找到用户和用户权限的文件,然后一个个添加用户和分配权限,浪费了不少时间,后来,服务器再次更改,被迫进行第二次迁移,此时,不想再一个个添加用户和分配权限,也觉得不可能没有其他办法的,于是,先查看并记录了所有文件的大小,然后添加用户,查看哪个文件发现了变化,后来得知authz和htpasswd文件的作用,呵呵

VisualSVN Server仓库迁移到Linux(包含所有版本, 权限,用户信息)

Windows服务器深度中毒,从Windows换成CentOS,所以要把原服务都转移到Linux下,SVN的转移却遇到了些问题,花费了三天时间,走了不少弯路,现在总算解决了SVN迁移问题,记录下:

在Windows上我们是用VisualSVN Server作SVN服务的,Linux上是编译安装的subversion 1.7.7。
Windows 的SVN仓库在E:\SVNRepositories,Linux在 /data/svnrepos

第1步,导出VisualSVN仓库:svnadmin dump E:\SVNRepositories\repo1 E:\repo1.dump

第2步,在Linux端create相同名称的仓库: svnadmin create /data/svnrepos/repo1

第3步,在Linux端load Windows导出的库:
cd /data/svnrepos
svnadmin load repo1 < repo1.dump

到此为止,repo1库就导入到Linux的subversion中了,但是用户信息、权限信息还没导入(这也是我折腾很久的问题),继续:

第4步,把E:\SVNRepositories\authz 上传到 /data/svnrepos
把E:\SVNRepositories\htpasswd 复制为 passwd 并修改后上传到 /data/svnrepos
修改后的passwd格式如下(其实就是用户名 = 密码):
[users]
user1 = 123
user2 = 456

第5步,修改仓库的/conf/svnserve.conf,使它指向第4步上传的那两个文件:
[general]
anon-access = none
auth-access = write
password-db = ../../passwd
authz-db = ../../authz

到这里就完成了,用命令 svnserve -d -r /data/svnrepos/ 启动subversion服务。

这样做还有个问题是passwd文件原密码信息全丢失了,由于windows下使用的apache的密码文件,密码使用的MD5加密的,而在Linux下svn的passwd文件的密码是明文形式保存的。所以原来的MD5密码将不可使用。

我只用了repo1这个仓库,如果有多个仓库一样步骤,分别导出导入,并修改仓库的/conf/svnserve.conf
如果按照上述方法操作还是不行,启动svnserve时用 –log-file ./log.txt参数查看错误信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值