- 浏览: 77618 次
- 性别:
- 来自: 广州
最新评论
文章列表
#!/bin/bash
ip=$1
currpath=$2
hostip=$3 //本机ip
if [ -z "$hostip" ] || [ "$ip" != "$hostip" ];then
ssh ${ip} $currpath/base/annotationCol.sh "/etc/ssh/sshd_config" "AuthorizedKeysFile\ "
ssh ${ip} $currpath/base/annotationCol.sh "/etc/ssh/sshd_co ...
sed给行前面加入‘#’号
- 博客分类:
- shell脚本部署无密码访问
#!/bin/bash
filename=$1
key=$2
#sed -i '2,5s/'"$key"'.*/#/' $filename
sed -i 's/^'"$key"'/#&/' $filename
shell新增用户
- 博客分类:
- shell脚本部署无密码访问
#!/bin/bash
gname=$1
uname=$2
password=$3
echo "==========$gname,$uname,$password======"
#userdel $uname
isUserExist=` cat /etc/passwd|grep $uname|wc -l `
isGroupExist=` cat /etc/group|grep $gname|wc -l `
if [ $isGroupExist -eq 0 ];then
echo "groupadd $gname"
groupadd $gname
fi
i ...
#!/bin/bash
ip=$1
uname=$2
password=$3
filepath=/usr/$uname/.ssh/id_rsa.pub
if [ $uname = "root" ];then
filepath=/root/.ssh/id_rsa.pub
fi
echo "===========resrsa===================="
expect <<EOF
spawn ssh-copy-id -i $filepath $uname@$ip
expect {
"*yes/no" {
s ...
#!/bin/bash
echo "===========genrsa===================="
expect <<EOF
spawn ssh-keygen -t rsa
expect {
"*id_rsa):" {
send "\n";
exp_continue
}
"*(y/n)?" {
send "y\n"
exp_continue
}
"*passphrase):" {
send "\n"
ex ...
解决sch远程命令找不到JAVA_HOME的问题
- 博客分类:
- ssh
最近在做一套自动化脚本,有时候需要远端触发java程序的执行。
但是通过ssh登陆之后会发现找不到JAVA_HOME
我的JAVA_HOME是定义在/etc/profile 里面的
略做研究之后发现结果如下:
/etc/profile: 当用户登录时,该文件被执行.
/etc/bashrc: 当bash shell被打开时,该文件被执行.
ssh作为non-login方式进入,当然就无法触发/etc/profile的执行了。
所以应该设置到/etc/bashrc里面去.
微博不能转载,所以这里记录一下,备份
摘自http://blog.codeconch.com/archives/397
...
#!/bin/bash
processExist=`ps aux|grep mongo|grep -v "grep" `
MONGODB_PATH="/opt/mongodb/mongos"
MONGODB_DATA="/opt/mongodb"
mongod_lock=$MONGODB_DATA/data/configsvr/mongod.lock
shard1_lock=$MONGODB_DATA/data/shard1/mongod.lock
shard2_lock=$MONGODB_DATA/data/shard2/mongo ...
java多线程消息队列的实现
- 博客分类:
- java
1、定义一个队列缓存池:
private static List<Queue> queueCache = new LinkedList<Queue>();
2、定义队列缓冲池最大消息数,如果达到该值,那么队列检入将等待检出低于该值时继续进行。
private Integer offerMaxQueue = 2000;
3、定义检出线程,如果队列缓冲池没有消息,那么检出线程会线程等待中
new Thread(){
public void run(){
while(true){
String ip = null;
try ...
做了一个测试,redis队列,在2000个线程同时并发处理四万个简单消息时,推入队列会报错;
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
从队列里面拿消息时,完全没问题,不报错;(可能是消息内容比较简单)
如果消息检入或者检出出错,做setnx锁,会严重限制速度;应该有容错错失,比如把异常的消息重新放入缓冲中,再进行一次推入或出列操作
机器的问题,吞吐量
入队时吞吐量是40000/66338 s 大概也有每秒六七千;
出队时吞吐量是40000/6 ...
程序获取spring加载属性文件
- 博客分类:
- spring
import java.util.HashSet;
import java.util.Properties;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/**这里不用<context:property-placehol ...
最近开了一个新项目,想用全注解式开发,在整合框架的时候遇到struts2.0 采用注解配置的时候action死活进不去,
报这错:
There is no Action mapped for namespace [/login] and action name [login] associated with context path [/toJsp]. - [unknown location]
不才我在想会不会是导入的包错了?然后一个一个检查,然后又想是不是写错了字,最后发现是struts2,如果用注解调用action的时候,那些action的类一定要写在action包下
//packa ...
每次遇到JedisConnectionException这个异常,jedispool就崩溃了,总结问题:有可能是阿里云的服务器老是会掉线,掉线这个问题不止一次遇见了,但也有可能是其它问题;这个问题很严重;为了系统有更好的容灾性,然后就有下面的歪招了;
下面是源码
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Transaction;
import redis.clients.je ...
zookeeper 分布式任务
- 博客分类:
- zookeeper
网上说了一大堆关于zookeeper选举,参差不齐,貌似没有啥代码可以copy,把自己也给绕进去了,这里结合一些网上的看法,自己写了代码,关于zookeeper的。
思路大概是这样:
1、每个节点进来查询是否有任务发布路径,如果没有,创建任务发布路径,自己成为领导;这个过程加锁,所以集群只有一个领导。
2、每个应用都可以发布任务。把命令写在发布路径的data里;所有应用监听到发布路径修改,执行任务类型;每个任务监听到任务后,会失去监听,那么再监听回任务发布路径,实现无限监听;
3、所有节点监听到领导挂了,再选举一个节点做为领导,具有容灾性质;
zookeeper要结合分布式内存存储工具(像m ...
zookeeper存储是树状结构,如/path1/path2(这里path1必须是PERSISTENT,否则path2不能创建),
节点有三种状态:
1、EPHEMERAL临时节点,server删除后该节点也会删除,但是我测试的时候,如果将server强制删除,EPHEMERAL节点会延迟删除;
2、PERSISTENT节点,这个是持久保存的节点。
3、SEQUENTIAL节点,自动标号的节点
如果父节点有子节点,父节点将不能删除。
watch是zookeeper最核心的一个功能;
watch = true;
监听某path1节点目录下是否创建删除子节点
zookeeper.getChild ...
1、支持同个页面多个form表单验证
2、支持两种验证提示方式。
在form 标签添加vanadiumType='multi'||vanadiumType='default'||vanadiumType='alert'
3、支持js提交验证
if(Vanadium.validForm("a_form")){
form.submit();
}
需要验证的标签只需要在input标签里面写 class=':number; :min_length;10'