目錄許可權設置命令:chmod
目錄許可權設置命令:chmod 這是Linux系統管理員最常用到的命令之一,它用於改變檔或目錄的訪問許可權。該命令有兩種用法: 用包含字母和操作符運算式的文字設定法 其語法格式為:chmod [who] [opt] [mode] 檔/目錄名 其中who表示對象,是以下字母中的一個或組合: u:表示檔所有者 g:表示同組用戶 o:表示其他用戶 a:表示所有用戶 opt則是代表操作,可以為: +:添加某個許可權 –:取消某個許可權 =:賦予給定的許可權,並取消原有的許可權 而mode則代表許可權: r:可讀 w:可寫 x:可執行 例如:為同組用戶增加對檔a.txt的讀寫許可權: chmod g+rw a.txt 用數字設定法 而數字設定法則更為簡單:chmod [mode] 檔案名 關鍵是mode的取值,一開始許多初學者會被搞糊塗,其實很簡單,我們將rwx看成二進位數,如果有則有1表示,沒有則有0表示,那麼rwx r-x r- –則可以表示成為: 111 101 100 再將其每三位轉換成為一個十進位數,就是754。 例如,我們想讓a.txt這個檔的許可權為: 自己 同組用戶 其他用戶 可讀 是 是 是 可寫 是 是 可執行 那麼,我們先根據上表得到許可權串為:rw-rw-r–,那麼轉換成二進位數就是110 110 100,再每三位轉換成為一個十進位數,就得到664,因此我 們執行命令: chmod 664 a.txt
Linux Maven的安装
1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.4-bin.tar.gz,下载可以使用wget命令; 2.进入下载文件夹,找到下载的文件,运行如下命令解压 tar -xvf apache-maven-3.0.4-bin.tar.gz 解压后的文件夹名为apache-maven-3.0.4 3.使用mv命令将apache-maven-3.0.4文件夹拷贝到自己指定的文件夹,比如/usr/local/下 mv -rf apache-maven-3.0.4 /usr/local/ 4.配置环境变量,编辑/etc/profile文件,添加如下代码 MAVEN_HOME=/usr/local/apache-maven-3.0.4 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin 5.保存文件,并运行如下命令使环境变量生效 source /etc/profile 6.在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功 mvn -v
linux 常用命令
1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 ps -e -o “%C : %p : %z : %a”|sort -k5 -nr 3.按cpu利用率从大到小排列 ps -e -o “%C : %p : %z : %a”|sort -nr 4.打印说cache里的URL grep -r -a jpg /data/cache/* | strings | grep “http:” | awk -F’http:’ ‘{print “http:”$2;}’ 5.查看http的并发请求数及其TCP连接状态: netstat […]
巧用zookeeper实现分布式并行计算
云计算的技术话题中少不了“分布式”,“并行计算” 这些个关键词,我们知道硬件扩展的条件(Scale-up)始终是有限制的,将计算分散到网络中更多机器的CPU上提供更高的计算性能(Scale-out),并在这基础上能将计算同时进行,那么总体计算瓶颈会减小,计算的性能会显著提高,也就是说将串行计算变为并行计算,将大量的计算在同一时间发生,,将任务分配到每一个处理器上。这里面需要一个重要的角色,分布式计算资源中的协调者。 有这样一个场景:系统中有大约100w的用户,每个用户平均有3个邮箱账号,每隔5分钟,每个邮箱账需要收取100封邮件,最多3亿份邮件需要下载到服务器中(不含附件和正文)。用20台机器划分计算的压力,从多个不同的网路出口进行访问外网,计算的压力得到缓解,那么每台机器的计算压力也不会很大了。 通过我们的讨论和以往的经验判断在这场景中可以实现并行计算,但我们还期望能对并行计算的节点进行动态的添加/删除,做到在线更新并行计算的数目并且不会影响计算单元中的其他计算节点,但是有4个问题需要解决,否则会出现一些严重的问题: 1.20台机器同时工作时,有一台机器down掉了,其他机器怎么进行接管计算任务,否则有些用户的业务不会被处理,造成用户服务终断。 2.随着用户数量增加,添加机器是可以解决计算的瓶颈,但需要重启所有计算节点,如果需要,那么将会造成整个系统的不可用。 3.用户数量增加或者减少,计算节点中的机器会出现有的机器资源使用率繁忙,有的却空闲,因为计算节点不知道彼此的运行负载状态。 4.怎么去通知每个节点彼此的负载状态,怎么保证通知每个计算节点方式的可靠性和实时性。 先不说那么多专业名词,白话来说我们需要的是:1记录状态,2事件通知 ,3可靠稳定的中央调度器,4易上手、管理简单。 采用Zookeeper完全可以解决我们的问题,分布式计算中的协调员,观察者,分布式锁 都可以作为zookeeper的关键词,在系统中利用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁等功能,利用这些特色在分布式计算中发挥重要的作用。 zookeeper的服务器端是采用Java编写,而zookeeper的客户端不仅可以支持java还可以支持C语言的客户端,在zookeeper服务端可以创建一个树状的Key/Vaule 存在着父子节点之间的关系。 Zookeeper允许多个Client对一个或多个ZNode数据进行监控,当ZNode有变化时能够通知到监控这个ZNode的各个Client,所有监听这个节点的成员都会知道了,Zookeeper使用Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点改变,可以调用相应的行为来处理业务逻辑。相反,如果zookeeper客户端对服务端的znode不关注,不Watcher,那么发生任何变化zookeeper的客户端都不会收到事件通知。 zookeeper中znode的数据模型 每次zookeeper客户端与服务器端连接后都会创建一个session ID 给客户端,客户端将会定期心跳协议到服务器端验证这个连接的有效性。如果由于某种原因,客户端无法发送心跳到服务器,将导致服务器验证过期的会话,会话ID将变为无效。客户持有的连接/对象将不可用,因此应用程序必须创建一个新的客户对象。如果zookeeper客户端连接到服务器没有任何响应,首先客户端会作抛出的异常并且被捕获,清除当前与Server相关的网络资源和连接会话,然后客户端逐个尝试配置列表中Server的连接地址,选择可用的服务器继续进行工作。 上述Zookeeper客户端和服务器端的关系又是一个典型的“观察者”模式,客户端关注自己关心的对象(znode),一旦发送变化就立刻通知。在《Head First设计模式》中有这样的一张图来表达 观察者模式的。 如图所示,此系统中的三个部分是气象站(获取实际气象数据的物理装置)、WeatherData对象(追踪来自气象站的数据,并更新布告板)和布告板,再来看看百度百科对“观察者”模式的解释:http://baike.baidu.com/view/1854779.htm 通过对Zookeeper的了解,实现我们系统中需要的Failure detection和Load detection 功能,只需要在每个计算的节点中实现zookeeper客户端程序,计算节点关注zookeeper服务器上znode节点变化。可以在zookeeper服务器的znode上创建一个根节点/clusterA,下面根据计算节点机器名创建对应的子节点,子节点中的value就是这台计算节点的ip地址。 如:/clusterA/node1,/clusterA/node2,/clusterA/nodeN,这些节点都是临时节点(EPHEMERAL),一旦连接断开,创建的节点自动会被删除,关注/clusterA这个根节点/clusterA的机器都会知道现在哪台机器离开计算单元了,并且获知现在有多少个计算节点在这个计算单元中。 如果有新的计算节点添加,在程序运行的第一步将会到zookeeper服务器上的/clusterA 的znode上创建一个子节点/clusterA/nodeZ,这样关注 /clusterA这个znode的机器都会知道现在多了一个计算节点。 通过zookeeper客户端API中的getChildren()方法对应的数据类型是java.util.List,其返回/clusterA下面的机器列表,这样还能判断出自己在这个列表中排行位置,通过列表中排行位置可以对应用户列表中的数目,这样就知道自己去获得需要计算总数中的几分之分。 例如:有100w用户,20个节点时,每个节点处理5w用户进行同时计算,node3计算节点承载用户总数中10w-15w用户之间的计算压力,有200w用户,20个节点时,每个节点处理10w个用户的业务进行同时计算,node3计算节点承载用户总数中30w-40w用户的计算压力,以此类推。 这样一来无论计算节点的数目发生变化还是,需要计算的数目发生变化,都可以保证计算压力的平均分载。 我的废话: 1.根据节点数对应用户数算出百分比之后进行计算分载,貌似我们通常的分页查询,只不过将每页的分页结果同时显示在N多个显示器上输出,希望这样比喻能让您更好的理解。 2.在计算的中间有新的用户数量增加,将会通知每个计算节点 下次轮询时需要重新统计用户数量,因为用户所有用户的数据分块拿走以后放入本地的静态hashmap(缓存),没有发生变化就从本地加载,操作数据库发生变化后,通知zookeeper的znode节点 每个计算节点重新从数据库中加载一次。 3.在并行计算中时间同步也是一个需要注意的地方,如果每台机器上的时间不一致会导致潜在的隐患,可以找些工具通过时间服务器同步每台机器上的当前时间和时区。 4.使用zookeeper对计算节点的状态管理只是zookeeper实现的一部分,zookeeper还可以对外提供分组,配置管理,命名空间等服务等,这里只是做了一个抛砖引玉的作用。 对于zookeeper的可靠性和性能而言,有足够的机器那么稳定性就会越高,但是性能会降低,因为ZooKeeper在运行时全部的数据都会加载到内存中,集群中每一台服务器都包含全量的数据,每个节点实时保持数据的同步。因此整个集群中Follower数量越多,整个集群写入的性能越差。后来zookeeper Server为了避免这个问题,可以将ZooKeeper集群中部分服务器指定为Observer。
Xshell4.0 xftp 4.0 key
xftp 4 101210-450789-147200 Xshell4.0 690313-111999-999313
异常/bin/sh^M: bad interpreter: No such file or directory。
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 解决:1)在windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File–>Conversions–>DOS->UNIX即可。 2)也可在Linux中转换: 首先要确保文件有可执行权限 #sh>chmod a+x filename 然后修改文件格式 #sh>vi filename 利用如下命令查看文件格式 :set ff 或 :set fileformat 可以看到如下信息 fileformat=dos 或 fileformat=unix 利用如下命令修改文件格式 :set ff=unix 或 :set fileformat=unix :wq (存盘退出) 最后再执行文件 #sh>./filename
linux chmod
使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [–help] [–version] mode file… 说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。 把计 : mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 -c : 若该档案权限确实已经更改,才显示其更改动作 -f : 若该档案权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) –help : 显示辅助说明 –version […]
lame wav to mp3 Unsupported data format: 0x0006
今天在对上传的wav转为mp3时报错 Unsupported data format: 0x0006 从别的格式pcm导出的wav可以正常转为mp3 出现这个问题第一个想到的办法就是通过mplayer把wav用pcm导一遍再转 这里给出第二个解决方案 先删除lame apt-get remove lame 安装sndfile apt-get apt-get install libsndfile1 libsndfile1-dev 下载最新的lame源码 wget http://cdnetworks-kr-2.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.2.tar.gz 解压安装 tar zxf lame-3.99.2.tar.gz cd lame-3.99.2/ ./configure –with-fileio=sndfile make && make install 做软链接 ln -s /usr/local/bin/lame /usr/bin/
Linux文件查找命令find,xargs详述
前言:关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 一、find 命令格式 1、find命令的一般形式为; find pathname -options [-print -exec -ok …] 2、find命令的参数; pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 3、find命令选项 -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件, – n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。 -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 […]
清除所有.svn目录 linux windows
从网上下载的开源项目,想把它集成到自己的系统中,需要先把里面的版本控制文件删除掉。 这里转载一下网上找到的删除方法,以备后用 一、在linux下 删除这些目录是很简单的,命令如下 find . -type d -name “.svn”|xargs rm -rf 或者 find . -type d -iname “.svn” -exec rm -rf {} \; 全部搞定。(http://tech.techweb.com.cn/redirect.php?fid=26&tid=205673&goto=nextnewset) 二、在windows下用以下法子: 1、在项目平级的目录,执行dos命令: xcopy project_dir project_dir_1 /s /i 2、或者在项目根目录执行以下dos命令 for /r . %%a in (.) do @if exist “%%a\.svn” rd /s /q “%%a\.svn” 其实第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。 3、加注册表 Jon Galloway提供了一段注册表代码,可以将”Delete SVN Folders”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。Works just great! […]