###########################################################################################################
XData-SDH:
ip:6080
service gridview_platform restart
start hdfs,yarn,zookeeper,hbase,hive
###########################################################################################################
Hive:
beeline -u jdbc:hive2://node1:10000
create table data_type1(
ctinyint tinyint,
csmallint smallint,
cint int,
cbigint bigint,
cfloat float,
cdouble double,
cdecimal decimal(10,6),
cbool boolean,
cstring string,
cvarchar varchar(255),
cdate date,
ctimestamp timestamp,
cinterval string,
cip string,
cnull string
) ROW FORMAT delimited fields terminated by ',';
hdfs dfs -put data_type1.csv /
load data inpath 'hdfs:///data_type1.csv' into table data_type1;
select * from data_type1;
###########################################################################################################
SparkSQL:
cp /etc/hive/conf/hive-site.xml /etc/spark/conf/
spark-shell
#import org.apache.spark.SparkConf
#import org.apache.spark.SparkContext
#val conf=new SparkConf().setAppName("Spark-Hive").setMaster("local")
#val sc=new SparkContext(conf)
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql(" SELECT * FROM data_type1").collect().foreach(println)
###########################################################################################################
Vim:
delete lines contains something:
:g/something/d
删除每行“()”里面的字符;
:%s/([^()]*)//g
删除每行“(” 后面的字符;
:%s/(.*//
dd 删除一整行
D d$ 删除光标位置到本行结尾
d0 删除光标位置到本行开头
删除汉字:
:%s/[^\x00-\xff]//g
gg 跳转到第一行
shift+v 转到可视模式
shift+g 全选
按下神奇的 =
set nu
set autoindent
set ts=4
删除空行
:g/^\s*$/d
###########################################################################################################
Oracle:
0. install
export DISPLAY=10.0.51.3:0.0
DISPLAY=192.168.1.128:0.0; export DISPLAY
export LANG=en
1. sqlplus / as sysdba
!!!Connected to an idle instance
SQL> starup;
SQL> create user duanty identified by duanty;
User created.
SQL> grant dba to duanty;
Grant succeeded.
SQL> conn duanty/duanty
Connected.
SQL> select * from tab; #查看所有表
SQL> select name from v$datafile #查看数据库存放目录
SQL> show parameter service #查看服务名
SQL> select * from v$instance; #查看实例名
SQL> select name from v$database; #查看数据库名
SQL> select * fromdba_users; #查看所有用户信息
SQL> select username,password from dba_users; #只查询用户和密码
SQL> select * fromv$pwfile_users; #查看具有sysdba权限的用户
SQL> select * fromdba_ustats; #查看当前用户信息
SQL> select * fromuser_sys_privs #查看当前用户系统权限
SQL> select * fromuser_role_privs #查看当前用户角色
SQL> select * fromdba_sys_privs #查看指定用户所具有的系统权限
SQL> select * fromv$version #查看oracle版本
SQL> select * fromuser_views #查看视图信息
--创建表空间
create tablespace [表空间名]
datafile 'D:\Oracle11g\oradata\[表空间名]' --路径
size 50M;
--备用
create temporary tablespace [表空间名]_temp
tempfile 'D:\Oracle11g\oradata\[表空间名]_temp.dbf'
size 50M;
--创建用户
create user [用户名]
identified by [用户密码] --密码
default tablespace [表空间名]
temporary tablespace [表空间名]_temp;
--权限
grant resource,connect,dba to gctidm;
-- 删除user
drop user [用户名] cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
-- 删除tablespace
DROP TABLESPACE [表空间名] INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE [表空间名]_temp INCLUDING CONTENTS AND DATAFILES;
sqlplus执行一个sql文件
SQL> @/home/oracle/oracle/create.sql
SQL> @/home/oracle/oracle/drop.sql
SQL> select to_char(build_date,'yyyy-mm-dd hh24:mm:ss') from C_CONS where ROWNUM <10;
2. lsnrctl
[root@oracledb ~]# lsnrctl start #开启远程监听端口
oracle error:Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...解决
ps -ef | grep oracle 有进程,但是程序连接不了oracle
2.1 修改/var/tmp/.oracle文件夹的权限用户为oracle;
2.2 lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 13-JUN-2013 16:33:36
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fansyPC)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
2.3 google Instance "orcl", status UNKNOWN, has 1 handler(s) for this service
修改/etc/hosts, 127.0.0.1 localhost,重新启动完成。
3.$ lsnrctl start
报错提示:
The listener supports no services
The command completed successfully
解决方法一:
在listener.ora里面添加了一行
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
)
)
注:里面的orcl根据你安装的数据库实例名确定,我用此法解决了这个报错。
解决方法二:
登录数据库:
$sqlplus / as sysdba
显示服务名:
SQL>show parameter service_names
强制注册服务:
SQL>alter system register;
查看监听状态:
$lsnrctl status
status->READY
4.导入第一个dmp的时候需要先创建tablespace,其他的不需要
sqlplus duanty/duanty
create tablespace USR_PMS_TBS
datafile '/home/oracle/USR_PMS_TBS'
size 8G;
)
cd /home/oracle/o2es
imp duanty/duanty@10.0.51.178:1521/orcl file=/home/oracle/o2es/C_MP.dmp full=y #5.4G twenty minutes
imp duanty/duanty@10.0.51.178:1521/orcl file=/home/oracle/o2es/ARC_E_MP_PQ.dmp full=y
SELECT INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME ='USR_PMS_TBS';
5.使用rowid快速唯一确定重复行结合max或min函数来实现删除重复行。
SQL>delete from stua where rowid not in (select max(b.rowid) from stu b where a.no=b.no and a.name= b.name and a.sex = b.sex)
grant select on table_name to cttic;
select 'GRANT SELECT ON ' || table_name || ' to cttic;' from user_tables;
select count(*) from duanty.BILL_RATE_PLAN;
truncate table c_cons;
drop table c_cons;
###########################################################################################################
Maven:
0. install
1.scp -r sugon:/usr/local/apache-maven-3.3.9 /usr/local/
2.vim /etc/profile
MAVEN_HOME=/usr/local/apache-maven-3.3.9
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
3.scp -r sugon:/root/.m2/repository /root/.m2/
4.chmod +x /usr/local/apache-maven-3.3.9/bin/*
1.[ERROR] Failed to execute goal on project mbm-schedule: Could not resolve dependencies for project com.sugon.bd:mbm-schedule:jar:0.0.1-SNAPSHOT: Failure to find org.nlpcn:elasticsearch-sql:jar:2.3.1.0 in http://maven.nlpcn.org/ was cached in the local repository, resolution will not be reattempted until the update interval of mvn-repo has elapsed or updates are forced
[SOLUTION]
<!--
<dependency>
<groupId>org.nlpcn</groupId>
<artifactId>elasticsearch-sql</artifactId>
<version>2.3.1.0</version>
</dependency>
-->
<dependency>
<groupId>org.nlpcn</groupId>
<artifactId>elasticsearch-sql</artifactId>
<scope>system</scope>
<version>2.3.1.0</version>
<systemPath>/root/hive_table/oracle/LL/mbm/mbm-common-1/libs/elasticsearch-sql-2.3.1.0.jar</systemPath>
</dependency>
2. repository
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<PROBLEM>
3. [ERROR] Failed to execute goal on project project-service: Could not resolve dependencies for project com.newhero.project:project-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies for [com.newhero.project:project-dao:jar:0.0.1-SNAPSHOT (compile?)]: Failed to read artifact descriptor for com.newhero.project:project-dao:jar:0.0.1-SNAPSHOT: Could not find artifact com.newhero.project:project-parent:pom:0.0.1-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
</PROblem>
<SOLUTION>
parent project:mvn install
</SOLUTION>
4.mvn install 是将你打好的jar包安装到你的本地库中,一般没有设置过是在 用户目录下的 .m2\下面。
mvn package 只是将你的代码打包到输出目录,一般的是 target下面。
5.1. 创建Maven的普通java项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=projectName
2. 创建Maven的Web项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
3. 编译源代码: mvn compile
4. 编译测试代码:mvn test-compile
5. 运行测试:mvn test
6. 产生site:mvn site
7. 打包:mvn package
8. 在本地Repository中安装jar:mvn install
9. 清除产生的项目:mvn clean
10. 生成eclipse项目:mvn eclipse:eclipse
11. 生成idea项目:mvn idea:idea
12. 组合使用goal命令,如只打包不测试:mvn -Dtest package
13. 编译测试的内容:mvn test-compile
14. 只打jar包: mvn jar:jar
15. 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile
( -skipping 的灵活运用,当然也可以用于其他组合命令)
16. 清除eclipse的一些系统设置:mvn eclipse:clean
ps:
mvn -version/-v 显示版本信息
mvn archetype:generate 创建mvn项目
mvn archetype:create -DgroupId=com.oreilly -DartifactId=my-app 创建mvn项目
mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn jetty:run 运行项目于jetty上,
mvn compile 编译
mvn test 编译并测试
mvn clean 清空生成的文件
mvn site 生成项目相关信息的网站
mvn -Dwtpversion=1.0 eclipse:eclipse 生成Wtp插件的Web项目
mvn -Dwtpversion=1.0 eclipse:clean 清除Eclipse项目的配置信息(Web项目)
mvn eclipse:eclipse 将项目转化为Eclipse项目
在应用程序用使用多个存储库
<repositories>
<repository>
<id>Ibiblio</id>
<name>Ibiblio</name>
<url>http://www.ibiblio.org/maven/</url>
</repository>
<repository>
<id>PlanetMirror</id>
</repository>
</repositories>
发布第三方Jar到本地库中:
mvn install:install-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar
-DdownloadSources=true
-DdownloadJavadocs=true
mvn -e 显示详细错误 信息.
mvn validate 验证工程是否正确,所有需要的资源是否可用。
mvn test-compile 编译项目测试代码。 。
mvn integration-test 在集成测试可以运行的环境中处理和发布包。
mvn verify 运行任何检查,验证包是否有效且达到质量标准。
mvn generate-sources 产生应用需要的任何额外的源代码,如xdoclet。
<id>PlanetMirror</id>
</repository>
</repositories>
发布第三方Jar到本地库中:
mvn install:install-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar
-DdownloadSources=true
-DdownloadJavadocs=true
mvn -e 显示详细错误 信息.
mvn validate 验证工程是否正确,所有需要的资源是否可用。
mvn test-compile 编译项目测试代码。 。
mvn integration-test 在集成测试可以运行的环境中处理和发布包。
mvn verify 运行任何检查,验证包是否有效且达到质量标准。
mvn generate-sources 产生应用需要的任何额外的源代码,如xdoclet。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lifxue/archive/2009/10/14/4662902.aspx
常用命令:
mvn -v 显示版本
mvn help:describe -Dplugin=help 使用 help 插件的 describe 目标来输出 Maven Help 插件的信息。
mvn help:describe -Dplugin=help -Dfull 使用Help 插件输出完整的带有参数的目标列
mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull 获取单个目标的信息,设置 mojo 参数和 plugin 参数。此命令列出了Compiler 插件的compile 目标
的所有信息
mvn help:describe -Dplugin=exec -Dfull 列出所有 Maven Exec 插件可用的目标
mvn help:effective-pom 看这个“有效的 (effective)”POM,它暴露了 Maven的默认设置
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook 创建Maven的普通java项目,在命令>行使用Maven Archetype 插件
mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序
mvn dependency:resolve 打印出已解决依赖的列表
mvn dependency:tree 打印整个依赖树
mvn install -X 想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行
mvn install -Dmaven.test.skip=true 给任何目标添加maven.test.skip 属性就能跳过测试
mvn install assembly:assembly 构建装配Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件
mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用
mvn compile 编译你的项目
mvn clean install 删除再编译
mvn hibernate3:hbm2ddl 使用 Hibernate3 插件构造数据库
Exception:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'
add \
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
to transformers
mvn compile
mvn package
###########################################################################################################
Java:
1.install
scp -r /usr/java/jdk1.8.0_65 192.168.50.19:/usr/java/
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_65
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$PATH
source /etc/profile
chmod +x /usr/java/jdk1.8.0_65/bin/*
2.compile
javac -cp ojdbc.jar:sdk.jar YK.java
java -cp ojdbc.jar:sdk.jar:. YK
3.因为Java里方法参数的传递实际上只有值传递(不管基本类型或引用类型),对基本类型来说是把其值传递了一份过去,而对引用类型来说实际是把引用地址的值复制一
份传递了过去。
另外,只有用new方法创建的对象的实际成员数据是存放在堆里面的,而其他方法内部定义的变量都存放在栈中,一旦出了方法的范围就失效,会被内存回收。
4.Jar:
jar cvf sdk.jar sdk
jar cvfm sdkm.jar sdk //create a jar
cd sdk
jar cvfm o2aus.jar manifest.mf . // create an executable jar
cat manifest.mf
Main-Class: O2AUS
java -jar o2aus.jar conf-t04
5.
hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
hashMap允许空键值,而hashTable不允许。
###########################################################################################################
Shell:
1. find . -size +500G
du -sh a.txt
lsblk
df -h
2. /etc/init.d/iptables off
3. 反引号位 (`) 位于键盘的Tab键的上方、1键的左方。注意与单引号(')位于Enter键的左方的区别。
在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。
如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中。
[root@localhost sh]# echo The date is `date`
The date is 2011年 03月 14日 星期一 21:15:43 CST
单引号、双引号用于用户把带有空格的字符串赋值给变量事的分界符。
>str="Today is Monday"
>echo $str
Today is Monday
如果没有单引号或双引号,shell会把空格后的字符串解释为命令。
>str=Today is Monday
bash: is: command not found
单引号和双引号的区别。单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、\、`。
>testvalue=100
>echo 'The testvalue is $testvalue'
The testvalue is $testvalue
>echo "The testvalue is $testvalue"
The testvalue is 100
4. 并发执行:
!/bin/bash
for(( i = 0; i < ${count}; i++ ))
do
{
commands1
}&
done
wait
commands2
1>/dev/null 表示将命令的标准输出重定向到 /dev/null
2>/dev/null 表示将命令的错误输出重定向到 /dev/null
&表示后台执行,可以实现并行执行
5.ssh node1 'mkdir -p /home/duanty'
6.
tar zxvf FileName.tar.gz
tar zcvf FileName.tar.gz DirName
7.
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
8. sed
将当前目录下包含jack串的文件中,jack字符串替换为tom
sed -i "s/jack/tom/g" `grep "jack" -rl ./`
将某个文件中的jack字符串替换为tom
sed -i "s/jack/tom/g" test.txt
sed -n '3p' tmp
sed -n '2,5p' tmp
删除文档的第一行
sed -i '1d' <file>
删除文档的最后一行
sed -i '$d' <file>
在文档指定行中增加一行
例如文档如下:
echo "1";
echo "2";
echo "4";
echo "5";
想要在echo "2";后面加上一条echo "3";可以用如下命令
sed -i '/echo "2";/aecho "3";' <file>
之所以用分号,是因为文本中本来就有。也就是说分号不是必须的!
抽象出来就是: sed -i '/* /a*' <file>
删除文件中的一行
sed -i '3d' <file>
删除文件中包含某个关键字开头的所有行
sed -i '/^QWQ/d' <file>
删除文件中包含某个关键字的所有行
sed -i '/QWQ/d' <file>
netstat -anp | grep 8080
查看端口状态
netstat -ant | grep 1521
查看网卡接收发送流量kB/s
sar -n DEV 1 3| grep eth5 | awk '{print $5 "\t" $ 6}' 1 每秒 3 报告3次
抓包:
tcpdump -n -i eth5 host 10.100.135.52 and 211.167.101.25 -w abc.cap
XShell 传文件:
rz -be
cat file | tr a-z A-Z
cat /etc/redhat-release
lsb_release -a
netstat -anp | grep 6080
mount /dev/sda1 /mnt/sda1 -t ext4
ps -ef | grep 3910
mysql -h 192.168.50.11 -P 3307 -u sgpms_ln -D sgpms_ln -p sgpms_ln
vim .bashrc
#alias cp='cp -i'
/usr/sbin/groupadd elasticsearch
/usr/sbin/useradd -g elasticsearch elasticsearch
[root@node1 ~]# vim /etc/sysctl.conf
[root@node1 ~]# sysctl -p
kernel.shmmni = 4096
kernel.sem = 5010 641280 5010 128
fs.file-max = 671088640
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 1048576
net.core.wmem_max = 1048576
vm.max_map_count = 262144
###########################################################################################################
System Tuning Recommendations
1 * intel_idle.max_cstate=0 kernel idle C-states power saving kernel option not specified
2 * processor.max_cstate=0 kernel C-states power saving kernel option not specified
3 * transparent_hugepage=never virtual memory option not specified
4 * vm.zone_reclaim_mode should be set to 0 [ actual: 0 ]
5 * vm.swappiness factor should be >= 0 and <= 10 [ actual: 0 ]
6 * swap memory use should be 0 [ actual: 0 kB ]
7 * vm.min_free_kbytes to avoid machine lock-up >= 1048576 kB [ actual: 1048576 kB ]
1,2,3 vim /etc/grub.conf
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_sugon-lv_root rd_NO_LUKS rd_LVM_LV=vg_sugon/lv_root rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_sugon/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet intel_idle.max_cstate=0 processor.max_cstate=0 transparent_hugepage=never
5,7 vim /etc/sysctl.conf
vm.min_free_kbytes to avoid machine lock-up >= 1048576 kB
vm.min_free_kbytes=1048576
* vm.swappiness factor should be >= 0 and <= 10
vm.swappiness=0
###########################################################################################################
Elasticsearch:
Elasticsearch的准实时索引的实现,Lucene的倒排索引动态更新。
1.
MySQL Elastic Search
Database Index
Table Type
Row Document
Schema Mapping
Index Everything is indexed
SQL Query DSL
SELECT * FROM GET http://
UPDATE table SET PUT http://
2. stop elasticsearch:
kill 9 ` ps aux | grep elasticsearch | grep java | awk '{print $2}'`
//默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被>系统阻塞,所以kill -9能顺利杀掉进程。
3. root:
vim bin/elasticsearch
exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -Des.insecure.allow.root=true -cp "$ES_CLASSPATH"
4.创建索引模版:
http://10.0.51.71:9200/
/_template/cmp POST
cat es_template_tbl_1.json
5.vim /opt/aus/elasticsearch/bin/elasticsearch.in.sh :
ES_MIN_MEM=8g
ES_MAX_MEM=8g
6.3M/S 单点
7.mapping:
http://10.0.37.1:9200/order-index-v3/order/_mapping PUT
8.setting:
curl -XPUT 'http://10.0.51.171:9200/t04-single-4000/_settings/' -d '{ "number_of_replicas" : 1 }'
9.
(1)关闭index
POST /index/_close
(2)更新settings
PUT /index/_settings
{
"analysis": {
"analyzer": {
"media_match_analyzer": {
"type": "pattern",
"pattern": "MEDIAMATCH",
"lowercase": false,
"stopwords": []
}
}
}
}
(3)打开index
POST /index/_open
查询type下数据信息:
http://10.0.37.1:9200/
order-index-201612/order/_search POST
###########################################################################################################
Ssh:
1.vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2.service sshd restart
3.ssh-keygen -t dsa
4. cat .ssh/id_dsa.pub>>.ssh/authorized_keys
5. scp .ssh/id_dsa.pub targetNode
###########################################################################################################
Memory:
1.清理前内存使用情况
free -m
2.开始清理
echo 1 > /proc/sys/vm/drop_caches
3.清理后内存使用情况
free -m
4.完成!
swapoff -a && swapon -a
buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
buffer是由各种进程分配的,被用在如输入队列等方面。
一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这
样可提高系统性能。
dmidecode | grep -A16 "Memory Device$"
###########################################################################################################
关闭防火墙:
centos 7
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
centos 6
service iptables stop #停止firewall
chkconfig iptables off #禁止firewall开机启动
###########################################################################################################
Deep Learning:
Caffe
第一个主流的工业级深度学习工具。
它开始于2013年底,由UC Berkely的Yangqing Jia老师编写和维护的具有出色的卷积神经网络实现。在计算机视觉领域Caffe依然是最流行的工具包。
它有很多扩展,但是由于一些遗留的架构问题,不够灵活且对递归网络和语言建模的支持很差。
TensorFlow
Google开源的其第二代深度学习技术——被使用在Google搜索、图像识别以及邮箱的深度学习框架。
是一个理想的RNN(递归神经网络)API和实现,TensorFlow使用了向量运算的符号图方法,使得新网络的指定变得相当容易,支持快速开发。
缺点是速度慢,内存占用较大。(比如相对于Torch)
MXNet
是李沐和陈天奇等各路英雄豪杰打造的开源深度学习框架,是分布式机器学习通用工具包DMLC 的重要组成部分。
它注重灵活性和效率,文档也非常的详细,同时强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。
Torch
Facebook力推的深度学习框架,主要开发语言是C和Lua。
有较好的灵活性和速度。
它实现并且优化了基本的计算单元,使用者可以很简单地在此基础上实现自己的算法,不用浪费精力在计算优化上面。核心的计算单元使用C或者cuda做了很好的优化。>在此基础之上,使用lua构建了常见的模型。
缺点是接口为lua语言,需要一点时间来学习。
Theano
2008年诞生于蒙特利尔理工学院,主要开发语言是Python。
Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras。
Theano的最大特点是非常的灵活,适合做学术研究的实验,且对递归网络和语言建模有较好的支持,缺点是速度较慢。
###########################################################################################################
uname -a 查看内核/操作系统/CPU信息
head -n 1 /etc/issue 查看操作系统版本
cat /proc/cpuinfo 查看CPU信息
hostname 查看计算机名
lspci -tv 列出所有PCI设备
lsusb -tv 列出所有USB设备
lsmod 列出加载的内核模块
env 查看环境变量
资源
free -m 查看内存使用量和交换区使用量
df -h 查看各分区使用情况
du -sh <目录名> 查看指定目录的大小
grep MemTotal /proc/meminfo 查看内存总量
grep MemFree /proc/meminfo 查看空闲内存量
uptime 查看系统运行时间、用户数、负载
cat /proc/loadavg 查看系统负载
磁盘和分区
mount | column -t 查看挂接的分区状态
fdisk -l 查看所有分区
swapon -s 查看所有交换分区
hdparm -i /dev/hda 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE 查看启动时IDE设备检测状况
网络
ifconfig 查看所有网络接口的属性
iptables -L 查看防火墙设置
route -n 查看路由表
netstat -lntp 查看所有监听端口
netstat -antp 查看所有已经建立的连接
netstat -s 查看网络统计信息
进程
ps -ef 查看所有进程
top 实时显示进程状态
用户
查看活动用户
id <用户名> 查看指定用户信息
last 查看用户登录日志
cut -d: -f1 /etc/passwd 查看系统所有用户
cut -d: -f1 /etc/group 查看系统所有组
crontab -l 查看当前用户的计划任务
服务
chkconfig --list 列出所有系统服务
chkconfig --list | grep on 列出所有启动的系统服务
程序
rpm -qa 查看所有安装的软件包
常用命令整理如下:
查看主板的序列号: dmidecode | grep -i ’serial number’
用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)
查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]
查看内存信息:cat /proc/meminfo [free -m][vmstat]
查看板卡信息:cat /proc/pci
查看显卡/声卡信息:lspci |grep -i ‘VGA’[dmesg | grep -i 'VGA']
查看网卡信息:dmesg | grep -i ‘eth’[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth']
查看PCI信息:lspci (相比cat /proc/pci更直观)
查看USB设备:cat /proc/bus/usb/devices
查看键盘和鼠标:cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk & disk – l & df
查看各设备的中断请求(IRQ):cat /proc/interrupts
查看系统体系结构:uname -a
查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]
dmidecode查看硬件信息,包括bios、cpu、内存等信息
测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev \?
查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v
查看当前系统中已经应用的补丁:showrev –p
显示当前的运行级别:who –rH
查看当前的bind版本信息:nslookup –class=chaos –q=txt version.bind
dmesg | more 查看硬件信息
lspci 显示外设信息, 如usb,网卡等信息
lsnod 查看已加载的驱动
lshw
psrinfo -v 查看当前处理器的类型和速度(主频)
系统
uname -a 查看内核/操作系统/CPU信息
head -n 1 /etc/issue 查看操作系统版本
cat /proc/cpuinfo 查看CPU信息
hostname 查看计算机名
lspci -tv 列出所有PCI设备
lsusb -tv 列出所有USB设备
lsmod 列出加载的内核模块
env 查看环境变量
资源
free -m 查看内存使用量和交换区使用量
df -h 查看各分区使用情况
du -sh <目录名> 查看指定目录的大小
grep MemTotal /proc/meminfo 查看内存总量
grep MemFree /proc/meminfo 查看空闲内存量
uptime 查看系统运行时间、用户数、负载
cat /proc/loadavg 查看系统负载
磁盘和分区
mount | column -t 查看挂接的分区状态
fdisk -l 查看所有分区
swapon -s 查看所有交换分区
hdparm -i /dev/hda 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE 查看启动时IDE设备检测状况
网络
ifconfig 查看所有网络接口的属性
iptables -L 查看防火墙设置
route -n 查看路由表
netstat -lntp 查看所有监听端口
netstat -antp 查看所有已经建立的连接
netstat -s 查看网络统计信息
进程
ps -ef 查看所有进程
top 实时显示进程状态
用户
查看活动用户
id <用户名> 查看指定用户信息
last 查看用户登录日志
cut -d: -f1 /etc/passwd 查看系统所有用户
cut -d: -f1 /etc/group 查看系统所有组
crontab -l 查看当前用户的计划任务
服务
chkconfig --list 列出所有系统服务
chkconfig --list | grep on 列出所有启动的系统服务
程序
rpm -qa 查看所有安装的软件包
常用命令整理如下:
查看主板的序列号: dmidecode | grep -i ’serial number’
用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)
查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]
查看内存信息:cat /proc/meminfo [free -m][vmstat]
查看板卡信息:cat /proc/pci
查看显卡/声卡信息:lspci |grep -i ‘VGA’[dmesg | grep -i 'VGA']
查看网卡信息:dmesg | grep -i ‘eth’[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth']
查看PCI信息:lspci (相比cat /proc/pci更直观)
查看USB设备:cat /proc/bus/usb/devices
查看键盘和鼠标:cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk & disk – l & df
查看各设备的中断请求(IRQ):cat /proc/interrupts
查看系统体系结构:uname -a
查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]
dmidecode查看硬件信息,包括bios、cpu、内存等信息
测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev \?
查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v
查看当前系统中已经应用的补丁:showrev –p
显示当前的运行级别:who –rH
查看当前的bind版本信息:nslookup –class=chaos –q=txt version.bind
dmesg | more 查看硬件信息
lspci 显示外设信息, 如usb,网卡等信息
lsnod 查看已加载的驱动
lshw
psrinfo -v 查看当前处理器的类型和速度(主频)
prtconf -v 打印当前的OBP版本号
iostat –E 查看硬盘物理信息(vendor, RPM, Capacity)
prtvtoc /dev/rdsk/c0t0d0s 查看磁盘的几何参数和分区信息
df –F ufs –o i 显示已经使用和未使用的i-node数目
isalist –v
对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
Cpuinfo 主机CPU信息
Dma 主机DMA通道信息
Filesystems 文件系统信息
Interrupts 主机中断信息
Ioprots 主机I/O端口号信息
Meninfo 主机内存信息
Version Linux内存版本信息
备注: proc – process information pseudo-filesystem 进程信息伪装文件系统
###########################################################################################################
Elasticsearch Maven:
1:mvn:https://maven.apache.org/
elasticsearch的源码是用mvn工具管理的,根据pom.xml来下载一些依赖包非常方便。(当然也可以用gradle,由于不太熟悉,就没研究)
最好自己修改一下mvn的setting.xml文件中的本地repo
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
mvn -v 测试以下
2:eclipse,mars版。(intellij idea据说这是一个很牛逼的编辑器,也是因为暂时不熟悉,还没研究)
步骤:
1: 去github上选择一个tag版本,我用的是2.1.0.
https://github.com/elastic/ela ... 2.1.0
2: 编译源代码
cmd 打开命令行
进入源文件目录 E:/elasticsearch-2.1.0
执行 mvn package命令
这个时间段耗时比较长,当然也得根据网速情况。
会出现失败,大多是因为拉取不到依赖包。可以根据提示信息,手动去下载失败的jar,然后拷贝到本地repo对应的文件夹下边即可。
等出现build success信息的时候代表成功了。
可以到core/target目录下看到elasticsearch-2.1.0-SNAPSHOT.jar。
3:转为eclipse工程
可能习惯了eclipse工程,所以这里就直接用mvn转成了eclipse的工程,生成.classpath和.project文件。
进入core目录执行以下指令
mvn eclipse:eclipse
这一步也会消耗一些时间,通常的错误也是jar包下载不成功,根据终端打印的错误信息,把对应jar包直接下载下来,放到本地的repo对应目录下边即可,然后重新运行
命令。直到成功。
之后,就会发现出现了.classpath和.project文件了。
然后打开eclipse 直接带入core中的工程即可。
4: 设置运行参数
打开刚刚导入成功的工程:
Run As----Run Configution---Args
设置ProgramArgument 为 start
设置VMArgument为 -Des.path.home=E:\elasticsearch-2.1.0\core\
完毕
-------
现在就就可以运行+调试了。
[ERROR] Failed to execute goal com.carrotsearch.randomizedtesting:junit4-maven-plugin:2.3.2:junit4 (tests) on project elasticsearch: At least one slave process threw an exception, first: Could not execute slave process. Run ant with -verbose to get the execution details. Cannot run program "/usr/java/jdk1.8.0_65/jre/bin/java" (in directory "/root/dty/elasticsearch-2.3.0/core/target/J0"): error=13, 权限不够 -> [Help 1]
Solution:
chmod +x /usr/java/jdk1.8.0_65/jre/bin/*
[INFO] spawn rpm --define _gpg_name 16E55242 --define _gpg_path /tmp/shortGpg --addsign elasticsearch-2.3.0-SNAPSHOT20170105070607.noarch.rpm
[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.3:rpm (default-rpm) on project elasticsearch: Unable to sign RPM: RPM sign execution returned: '130' executing '/bin/sh -c cd '/home/oracle/elasticsearch-2.3.1/distribution/rpm/target/rpm/elasticsearch/RPMS/noarch' && 'expect' '-c' 'sleep 1' '-'' -> [Help 1]
Solution:
yum install rpm
[ERROR] Failed to execute goal com.carrotsearch.randomizedtesting:junit4-maven-plugin:2.3.2:junit4 (tests) on project elasticsearch: There were test failures: 556 suites, 581 tests, 7 suite-level errors, 544 errors [seed: CD3B55A37F4FEC3F] -> [Help 1]
Solution:
non-root user
Could not find artifact org.elasticsearch:elasticsearch:jar:tests:2.3.1-SNAPSHOT in oss-snapshots
###########################################################################################################
修改Oracle服务器端字符集:
问题描述:同事在Linux下安装的Oracle,默认的字符集没有修改,使用的是WE8ISO8859P1,不能够支持中文,
问题表现为,客户端录入的中文数据可以显示,提交之后再查询出来后中文会显示为???。问题出在oracle服务端的字符集不支持中文导致。
可以通过:
select userenv('language') from dual; 命令可以查看服务端的使用的字符集。
或者select * from V$NLS_PARAMETERS;命令也可以
以及 select * from SYS.PROPS$;
确定了问题后就Google了一下,网上倒是有很多这方面的资料。可能是自己的环境和他们的不一致的原因,按照网上的那些步骤我的问题没有解决。
问题根源找到了就好解决了,参考着网上的资料自己的解决步骤如下:
总的来说有两个思路:
1、重新安装
2、修改字符集
我的解决步骤:
1、ssh登录,切换到oracle用户
切换用户命令:su -oracle
之后用sqlplus登录oracle,命令:
:sqlplus /nolog
:connect /as sysdba
这样就登录了。
2、更改字符集
首先 sqlplus登录后,关闭oracle数据库
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 UTF8;
shutdown immediate ;
startup ;
以下是我的调试命令记录,大家可以参考一下,那些提示错误的命令都是执行失败的,可以不必管。
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 104859216 bytes
Database Buffers 176160768 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter system enable restricted session;
System altered.
SQL> alter system set job_queue_processes=0;
System altered.
SQL> alter system set aq_tm_processes=0;
System altered.
SQL> alter database open;
Database altered.
vim /home/oracle/.bash_profile
export NLS_LANG="AMERICAN_AMERICA.UTF8"
NLS_LANG=<Language>_<Territory>.<Clients Characterset>
NLS_LANG各部分含义如下:
LANGUAGE指定:
-Oracle消息使用的语言
-日期中月份和日显示
TERRITORY指定
-货币和数字格式
-地区和计算星期及日期的习惯
CHARACTERSET:
-控制客户端应用程序使用的字符集
通常设置或者等于客户端(如Windows)代码页
或者对于unicode应用设置为UTF8
###########################################################################
Cloudera:
service cloudera-scm-server statusrm -rf /var/run/cloudera-scm-server.pidservice cloudera-scm-server startfind -name cloudera*.log
find / -name cloudera*.log
vim /var/log/cloudera-scm-server/cloudera-scm-server.log
ll /etc/cloudera-scm-server/db.properties
ll /etc/cloudera-scm-server/
ll /var/log/
ll /etc/cloudera-scm-server/db.properties
chown -R cloudera-scm:cloudera-scm /etc/cloudera-scm-*
service cloudera-scm-server status
rm -rf /var/run/cloudera-scm-server.pid
service cloudera-scm-server status
service cloudera-scm-server start
###########################################################################################################
SparkMySQLOraclePostgreSQL
hive -e 'SET hive.cli.print.header=true; SELECT * from sgpms_ln.c_cons' >> /data20/c_con.txt
1.配置
2.启动
spark sql :
import org.apache.spark.sql.SparkSession
import org.elasticsearch.spark.sql._
import org.apache.spark.sql.types._
val spark = SparkSession.builder().appName("Spark Sql Example").enableHiveSupport().getOrCreate()
val e_cat_prc_dataframe=spark.read.format("jdbc").option("url","jdbc:mysql://192.168.50.11:3307/sgpms_ln").option("driver","com.mysql.jdbc.Driver").option("dbtable","E_CAT_PRC").option("user","sgpms_ln").option("password","sgpms_ln").load().select("cat_prc_name","prc_code","para_vn","cat_prc_id")
e_cat_prc_dataframe.createOrReplaceTempView("e_cat_prc")
val e_cat_prc_det_dataframe=spark.read.format("jdbc").option("url","jdbc:mysql://192.168.50.11:3307/sgpms_ln").option("driver","com.mysql.jdbc.Driver").option("dbtable","E_CAT_PRC_DET").option("user","sgpms_ln").option("password","sgpms_ln").load().select("kwh_prc","cat_kwh_prc","cat_prc_id","prc_ti_code")
e_cat_prc_det_dataframe.createOrReplaceTempView("e_cat_prc_det")
val hc= new org.apache.spark.sql.hive.HiveContext(spark.sparkContext)
val c_mp_dataframe=hc.sql("select org_no,mp_id,mp_no from sgpms_ln.c_mp")
c_mp_dataframe.createOrReplaceTempView("c_mp")
val arc_e_mp_para_snap_dataframe=hc.sql("select ym,mp_id,org_no,calc_id,prc_id,org_no,mp_para_snap_id from sgpms_ln.arc_e_mp_para_snap")
arc_e_mp_para_snap_dataframe.createOrReplaceTempView("arc_e_mp_para_snap")
val arc_e_consprc_snap_dataframe=hc.sql("select pf_std_code,actual_pf,calc_id,prc_id,prc_snap_id,org_no from sgpms_ln.arc_e_consprc_snap")
arc_e_consprc_snap_dataframe.createOrReplaceTempView("arc_e_consprc_snap")
val arc_e_cons_prc_amt_dataframe=hc.sql("select t_amt,calc_id,level_num,t_pl_amt,prc_snap_id,org_no,prc_code,para_vn from sgpms_ln.arc_e_cons_prc_amt")
arc_e_cons_prc_amt_dataframe.createOrReplaceTempView("arc_e_cons_prc_amt")
val arc_e_mp_pq_dataframe=hc.sql("select prc_ts_code,settle_apq,mp_para_snap_id,org_no,prc_ts_code from sgpms_ln.arc_e_mp_pq")
arc_e_mp_pq_dataframe.createOrReplaceTempView("arc_e_mp_pq")
val result=spark.sql("select cm.mp_no mp_no, ecp.cat_prc_name cat_prc_name, acmpq.prc_ts_code prc_ts_code, aecp.t_amt t_amt, aecp.calc_id calc_id, aep.pf_std_code pf_std_code, aep.actual_pf actual_pf, aecp.level_num level_num, acmpq.settle_apq settle_apq, ecpd.kwh_prc kwh_prc, ecpd.cat_kwh_prc cat_kwh_prc, aecp.t_pl_amt t_pl_amt, am.org_no org_no, am.ym ym from c_mp cm, arc_e_mp_para_snap am, arc_e_consprc_snap aep, arc_e_cons_prc_amt aecp, arc_e_mp_pq acmpq, e_cat_prc ecp, e_cat_prc_det ecpd where cm.mp_id = am.mp_id and cm.org_no = am.org_no and am.calc_id = aep.calc_id and am.prc_id = aep.prc_id and am.org_no = aep.org_no and aecp.prc_snap_id = aep.prc_snap_id and aecp.org_no = aep.org_no and ecp.prc_code = aecp.prc_code and ecp.para_vn = aecp.para_vn and acmpq.mp_para_snap_id = am.mp_para_snap_id and acmpq.org_no = am.org_no and ecp.cat_prc_id = ecpd.cat_prc_id and acmpq.prc_ts_code = ecpd.prc_ti_code")
###########################################################################################################
Search:
#!/usr/bin/env bash
ps -ef | grep $1 | grep -v /usr/bin/search | grep -v "grep $1"
find / -name $1 2>/dev/null
###########################################################################################################
Mail:
echo “unset MAILCHECK” >> /etc/profilesource /etc/profile
###########################################################################################################
Hostname:
centos 7:
sudo hostnamectl --static set-hostname node1
###########################################################################################################
tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换。
语法:tr [–c/d/s/t] [SET1] [SET2]
SET1: 字符集1
SET2:字符集2
-c:complement,用SET2替换SET1中没有包含的字符
-d:delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符
-t: truncate-set1,将SET1用SET2转换,一般缺省为-t
1、去除重复的字符
将连续的几个相同字符压缩为一个字符
$ echo aaacccddd | tr -s [a-z]
acd
$ echo aaacccddd | tr -s [abc]
acddd
2、删除空白行
删除空白行就是删除换行符/n
注意:这些空白行上只有回车符,没有空格符
$ cat test.txt
I love linux!
Hello World!
Shell is worthy to been studied
这里用换行符的转义字符\n
注意:此处用-s删除了多余的换行符,如果用-d,则会删除所有的换行符
$ cat test.txt | tr -s ["\n"]
I love linux!
Hello World!
Shell is worthy to been studied
也可以用八进制符\012,\012与\n都是换行符
$ cat test.txt | tr -s "[\012]"
I love linux!
Hello World!
Shell is worthy to been studied
3、大小写相互转换
将语句中所有的小写字母变成大写字母,其中-t可省略
$ echo "Hello World I Love You" |tr [-t] [a-z] [A-Z]
HELLO WORLD I LOVE YOU
将语句中所有的大写字母变成小写字母
$ echo "Hello World I Love You" |tr [A-Z] [a-z]
hello world i love you
也可以利用字符类进行转换
[:lower:]代表小写字母,[:upper:]代表大写字母
$ echo "Hello World I Love You" |tr [:lower:] [:upper:]
HELLO WORLD I LOVE YOU
4、删除指定的字符
$ cat test.txt
Monday 09:00
Tuesday 09:10
Wednesday 10:11
Thursday 11:30
Friday 08:00
Saturday 07:40
Sunday 10:00
现在要删除处理星期之外的所有字符
-d代表删除,[0-9]代表所有的数字,[: ]代表冒号和空格
$ cat test.txt | tr -d "[0-9][: ]"
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
5、利用-c进行补集的替换
有时候在文本中我们只知道要保留的一些字符,其他字符种类繁多,就可以使用补集的替换
$ cat test.txt
Monday 09:00
Tuesday 09:10
Wednesday 10:11
Thursday 11:30
Friday 08:00
Saturday 07:40
Sunday 10:00
我们只需要星期,则思路就是除了字母,其他统统替换掉
这里,-c:用换行符替换掉除了字母外的所有字符;-s:删除多余的换行符
cat test.txt|tr -cs "[a-z][A-Z]" "\n"
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
总结:其中大小写字母的转换,删除不需要的字符比较常用。tr语法简单,易用。
###########################################################################################################
用户权限:
三位数字代表9位的权限,分成3部分,第一部分3位表示所有者的权限,第二部分3位表示同组用户权限,第三部分3位表示其他用户权限,r代表读取权限等于4,w代表写入权限等于2,x代表执行权限等于1。
比如777,第一位7等于4+2+1,所以就是rwx,所有者有读取、写入、执行的权限,第二位7也是4+2+1,rwx,同组用户具有读取、写入、执行权限,第三位7,代表其他用户有读取、写入、执行的权限。
比如744,第一位7等于4+2+1,rwx,所有者具有读取、写入、执行权限,第二位4等于4+0+0,r–,同组用户只有读取权限、第三位4,也是r–,其他用户只有读取权限。
###########################################################################################################
$()和${}和$(())和(())
$()和${}的用法:
在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的。而 $( ) 并不见的每一种 shell 都能使用,若你用 bash2 的话,肯定没问题...
看 ${ } 吧... 它其实就是用来作变量替换用的啦。一般情况下,$var 与 ${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围。
我这里再用一些例子加以说明 ${ } 的一些特异功能:
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
我们可以用 ${ } 分别替换获得不同的值:
${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是去掉左边(在鉴盘上 # 在 $ 之左边)
% 是去掉右边(在鉴盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2
我们也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个 dir 提换为 path:/
path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部 dir 提换为 path:/
path1/path2/path3/my.file.txt
利用 ${ } 还可针对不同的变量状态赋值(没设定、空值、非空值):
${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理)
${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用my.file.txt 作传回值。 (非空值时不作处理)
${file+my.file.txt} :假如 $file 设为空值或非空值,均使用my.file.txt作传回值。(没设定时不作处理)
${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。(没设定及空值时不作处理)
${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。 (空值及非空值时不作处理)
${file:=my.file.txt} :若$file没设定或为空值,则使用my.file.txt作传回值,同时将 $file 赋值为my.file.txt 。(非空值时不作处理)
${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至STDERR。 (空值及非空值时不作处理)
${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理)
以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态.
一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连null 也受影响.
还有哦,${#var} 可计算出变量值的长度:
${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节...
$(())的用途:
它是用来作整数运算的。
在 bash 中,$(( )) 的整数运算符号大致有这些:
+ - * / :分别为 "加、减、乘、除"。
% :余数运算
& | ^ !:分别为 "AND、OR、XOR、NOT" 运算。
举例:
>a=5;b=7;c=2;
>echo $a + $b
5 + 7
>echo $(( a + b*c))
19
>echo $(((a*b)/c))
17
>echo $(($a +$b*$c))
19
在 $(( )) 中的变量名称,可于其前面加 $ 符号来替换,也可以不用,如:
$(( $a + $b * $c)) 也可得到 19 的结果
此外,$(( )) 还可作不同进位(如二进制、八进位、十六进制)作运算呢,只是,输出结果皆为十进制而已:
echo $((16#2a)) 结果为 42 (16进位转十进制)
(())的用途:
事实上,单纯用 (( )) 也可重定义变量值,或作 testing:
a=5; ((a++)) 可将 $a 重定义为 6
a=5; ((a--)) 则为 a=4
a=5; b=7; ((a < b)) 会得到 0 (true) 的返回值。
常见的用于 (( )) 的测试符号有如下这些:
<:小于
>:大于
<=:小于或等于
>=:大于或等于
==:等于
!=:不等于
##########################################################################################################
sudo: sorry, you must have a tty to run sudo
sudo vim /etc/sudoers
#Defaults requiretty
:wq!
##########################################################################################################
正则:
\s匹配任意的空白符(包括空格,制表符(Tab),换行符,中文全角空格)
\S则是任意不是空白符的字符
?涉及到贪婪模式
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)
##########################################################################################################
1.重启服务器,编辑启动项
编辑kernel行,ro root前加single。
退出,输入b进入单用户模式。
2.启动eth0
ifup eth0,提示缺少一个目录,mkdir创建;
3.拷贝var
使用scp拷贝其他节点上的var到本机
3.启动sshd
service sshd start,这是可以使用xshell连接进行工作。
##########################################################################################################
PS用来查看当前运行的进程
一般格式:
ps [选项]
全部选项
-e 显示所有进程
-f 全格式
-h 不显示标题
-l 长格式
a 显示终端上的所有进程,包括其他用户的进程信息
r 只显示正在运行的进程
x 显示没有控制的终端进程
u 面向用户格式
ps -lf 显示本用户本次登陆启动的进程信息:
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 25299 25295 0 80 0 - 29297 wait 09:02 pts/0 00:00:00 -bash
1 S root 26298 25299 0 80 0 - 29297 wait 09:31 pts/0 00:00:00 -bash
0 S root 26299 26298 5 80 0 - 5418363 futex_ 09:31 pts/0 00:02:26 java -Xmx16g -Xms16g -cp target/BigDataTeamOfChina-0.1.2-SNAPSHOT.jar CSV
0 R root 27085 25299 0 80 0 - 34873 - 10:15 pts/0 00:00:00 ps -lf
-l : 长格式显示进程
-f : 全格式显示
显示内容解释
F : 进程旗标。0表示一般进程,1表示已经创建但未执行,4表示有超级用户权限,显示结果是这些情况之和
S : 表示进程状态 ,R 表示运行或就绪。S表示可中断的睡眠(等待事件完成)
PID : 进程ID
PPID : 父进程ID
C: 占用的CPU的百分比,仅整数部分
PRI: 优先级
NI: Nice值
ADDR: 内核进程的地址,一般用 - 表示
SZ: 占用内存的大小
WCHAN: 进程是否正在进行, - 表示正在运行。
STIME: 启动进程的时间点
TTY: 终端
TIME: 进程消耗的CPU时间
CMD: 命令的名称与参数
ps -u
-u :面向用户格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2451 0.0 0.1 286176 34080 tty1 Ssl+ 2月07 0:09 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-f
root 4784 0.0 0.0 117076 3632 pts/1 Ss+ 2月07 0:00 /bin/bash
root 25299 0.0 0.0 117312 4064 pts/0 Ss+ 09:02 0:00 -bash
root 26076 0.0 0.0 117184 3976 pts/2 Ss 09:29 0:00 -bash
root 27812 0.0 0.0 139492 1636 pts/2 R+ 11:21 0:00 ps -u
显示内容解释
USER: 进程的所有者
PID: 进程号
%CPU: 占CPU的百分比,用一位小数表示。
%MEM: 占用的内存的百分比
VSZ(virtual memory size ) 占用虚拟内存的大小,单位为kB
RSS(residendt set size) 占用的非交换物理内存的大小,单位为KB
TTY: 终端的次要装备号码
STAT: 进程的状态
START: 启动进程的时间点
TIME: 进程消耗的CPU时间
COMMAND: 命令的名称和参数
进程状态标志及含义:
标识 含义
D 不可中断的睡眠(通常由IO引起)
R 运行或就绪
S 可中断的睡眠(等待事件完成)
T 停止(因作业控制或调试追踪)
W 页面交换(2.6.xx内核起无效)
Z 僵尸进程(因结束时父进程未对其进行清理造成的)
< 高优先级
N 低优先级
L 有分页被锁进内存
s 回话的领导者进程(控制进程)
I 多线程进程
+ 在前台进程组
##########################################################################################################
Renice:
renice -n -20 -p 26299
Linux系统进程的优先级取值:-20 到 19,数越大优先级越低。
可以通过top命令来查看,NI那一列 或者 ps -lf
改变进程的优先级的方法有两种:
1,top命令。输入r,然后根据提示输入进程ID,再输入优先级数值。
2,renice命令。renice -n -20 -p 3432。-n,后面是优先级的值;-p,是进程号。
##########################################################################################################
Java "" null:
String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;
String str = ""; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;
在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap):
就如下:
String str = new String("abc") ;
ps:=左边的是存放在栈中(stack),=右边是存放在堆中(heap)。
空字符串对象与null的值不相等,且内存地址也不相等;
new String()创建一个字符串对象的默认值为"" (String类型成员变量的初始值为null)
if(s == null || s.length() == 0);
##########################################################################################################
内存文件映射,简单地说就是将文件映射到内存的某个地址上。
要理解内存文件映射,首先得明白普通方式读取文件的流程:
首先内存空间分为内核空间和用户空间,在应用程序读取文件时,底层会发起系统调用,由系统调用将数据先读入到内核空间,然后再将数据拷贝到应用程序的用户空间供应用程序使用。这个过程多了一个从内核空间到用户空间拷贝的过程。
如果使用内存文件映射,文件会被映射到物理内存的某个地址上(不是数据加载到内存),此时应用程序读取文件的地址就是一个内存地址,而这个内存地址会被映射到了前面说到的物理内存的地址上。应用程序发起读之后,如果数据没有加载,系统调用就会负责把数据从文件加载到这块物理地址。应用程序便可以读取到文件的数据。省去了数据从内核空间到用户空间的拷贝过程。所以速度上也会有所提高。
##########################################################################################################
BOM:
find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;
##########################################################################################################
第一:_cat系列
_cat系列提供了一系列查询elasticsearch集群状态的接口。你可以通过执行
curl -XGET localhost:9200/_cat
获取所有_cat系列的操作
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
你也可以后面加一个v,让输出内容表格显示表头,举例
name component version type url
Prometheus analysis-mmseg NA j
Prometheus analysis-pinyin NA j
Prometheus analysis-ik NA j
Prometheus analysis-ik NA j
Prometheus analysis-smartcn 2.1.0 j
Prometheus segmentspy NA s /_plugin/segmentspy/
Prometheus head NA s /_plugin/head/
Prometheus bigdesk NA s /_plugin/bigdesk/
Xandu analysis-ik NA j
Xandu analysis-pinyin NA j
Xandu analysis-mmseg NA j
Xandu analysis-smartcn 2.1.0 j
Xandu head NA s /_plugin/head/
Xandu bigdesk NA s /_plugin/bigdesk/
Onyxx analysis-ik NA j
Onyxx analysis-mmseg NA j
Onyxx analysis-smartcn 2.1.0 j
Onyxx analysis-pinyin NA j
Onyxx head NA s /_plugin/head/
Onyxx bigdesk NA s /_plugin/bigdesk/
第二:_cluster系列
1、查询设置集群状态
curl -XGET localhost:9200/_cluster/health?pretty=true
pretty=true表示格式化输出
level=indices 表示显示索引状态
level=shards 表示显示分片信息
2、curl -XGET localhost:9200/_cluster/stats?pretty=true
显示集群系统信息,包括CPU JVM等等
3、curl -XGET localhost:9200/_cluster/state?pretty=true
集群的详细信息。包括节点、分片等。
3、curl -XGET localhost:9200/_cluster/pending_tasks?pretty=true
获取集群堆积的任务
3、修改集群配置
举例:
curl -XPUT localhost:9200/_cluster/settings -d '{
"persistent" : {
"discovery.zen.minimum_master_nodes" : 2
}
}'
transient 表示临时的,persistent表示永久的
4、curl -XPOST ‘localhost:9200/_cluster/reroute’ -d ‘xxxxxx’
对shard的手动控制,参考http://zhaoyanblog.com/archives/687.html
5、关闭节点
关闭指定192.168.1.1节点
curl -XPOST ‘http://192.168.1.1:9200/_cluster/nodes/_local/_shutdown’
curl -XPOST ‘http://localhost:9200/_cluster/nodes/192.168.1.1/_shutdown’
关闭主节点
curl -XPOST ‘http://localhost:9200/_cluster/nodes/_master/_shutdown’
关闭整个集群
$ curl -XPOST ‘http://localhost:9200/_shutdown?delay=10s’
$ curl -XPOST ‘http://localhost:9200/_cluster/nodes/_shutdown’
$ curl -XPOST ‘http://localhost:9200/_cluster/nodes/_all/_shutdown’
delay=10s表示延迟10秒关闭
第三:_nodes系列
1、查询节点的状态
curl -XGET ‘http://localhost:9200/_nodes/stats?pretty=true’
curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2/stats?pretty=true’
curl -XGET ‘http://localhost:9200/_nodes/process’
curl -XGET ‘http://localhost:9200/_nodes/_all/process’
curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2,192.168.1.3/jvm,process’
curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2,192.168.1.3/info/jvm,process’
curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2,192.168.1.3/_all
curl -XGET ‘http://localhost:9200/_nodes/hot_threads
第四:索引操作
1、获取索引
curl -XGET ‘http://localhost:9200/{index}/{type}/{id}’
2、索引数据
curl -XPOST ‘http://localhost:9200/{index}/{type}/{id}’ -d'{“a”:”avalue”,”b”:”bvalue”}’
3、删除索引
curl -XDELETE ‘http://localhost:9200/{index}/{type}/{id}’
4、设置mapping
curl -XPUT http://localhost:9200/{index}/{type}/_mapping -d '{
"{type}" : {
"properties" : {
"date" : {
"type" : "long"
},
"name" : {
"type" : "string",
"index" : "not_analyzed"
},
"status" : {
"type" : "integer"
},
"type" : {
"type" : "integer"
}
}
}
}'
5、获取mapping
curl -XGET http://localhost:9200/{index}/{type}/_mapping
6、搜索
curl -XGET 'http://localhost:9200/{index}/{type}/_search' -d '{
"query" : {
"term" : { "user" : "kimchy" } //查所有 "match_all": {}
},
"sort" : [{ "age" : {"order" : "asc"}},{ "name" : "desc" } ],
"from":0,
"size":100
}
curl -XGET 'http://localhost:9200/{index}/{type}/_search' -d '{
"filter": {"and":{"filters":[{"term":{"age":"123"}},{"term":{"name":"张三"}}]},
"sort" : [{ "age" : {"order" : "asc"}},{ "name" : "desc" } ],
"from":0,
"size":100
}
##########################################################################################################
spark-shell --master local --jars elasticsearch-hadoop-5.1.1.jar --conf spark.es.node=node1 --conf spark.es.mapping.date.rich=false
##########################################################################################################
sr代表 scsi + rom
sd代表 scsi + disk
sg 代表 scsi + generic
st代表 scsi + tape
小型计算机系统接口(SCSI,Small Computer System Interface)是一种用于计算机及其周边设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。SCSI标准定义了命令、通讯协定以及实体的电气特性(换成OSI的说法,就是占据了实体层、连结层、通讯层、应用层),最大部份的应用是在储存设备上(例如硬盘、磁带机);但,其实SCSI可以连接的设备包过有扫描器、光学装置(像CD、DVD)、打印机……等等,SCSI命令中有条列出支援的装置SCSI周边装置。理论上,SCSI不可能连接所有的装置,所以有“1Fh - unknown or no device type”这个参数存在。
2.5英寸及3.5英寸的SAS硬盘与一粒Hershey&#39;&#39;&#39;&#39;s Kiss薄荷糖的大小比较。
串行SCSI(SAS:Serial Attached SCSI)是由并列SCSI物理存储接口演化而来,是由ANSI INCITS T10技术委员会开发的新的存储接口标准。与并列方式相比,串行方式提供更快速的通信传输速度以及更简易的配置。此外SAS支援与串行ATA设备相容,且两者可以使用相类似的电缆。
SAS是点对点(point-to-point)连接,并允许多个端口集中于单个控制器上,可以建立在主板(mother board)也可以另外添加。该技术建立在强大的并列SCSI通信技术基础上。SAS是采用SATA相容的电缆线采取点对点连接方式,从而在计算机系统中不需要建立菊花链(daisy-chaining)方式便可简单地实现线缆安装。
第一代SAS为阵列中的每个驱动器提供 1.5 Gbps (150 MBps) 的传输速率。
第二代SAS为阵列中的每个驱动器提供 3.0 Gbps (300 MBps) 的传输速率。
第二代SAS为阵列中的每个驱动器提供 6.0 Gbps (600 MBps) 的传输速率.
SCSI,IDE,SATA ,SSD
IDE硬盘即我们日常所用的硬盘,它由于价格便宜而性能也不差,因此在PC上得到了广泛的应用。
除了SCSI,IDE也是一种极为常用的接口。从使用简便的角度来看,IDE更加适合普通用户,再加上个人电脑用户不但需要配置的外设不多,而且对速度要求也不高,因此选用IDE接口更合适些。此外,IDE还具有性能价格比高、适用面广等特点。而SCSI接口尽管具有很多无与伦比的特点,但不论从哪个角度看,该接口及其使用该接口的外设售价过于昂贵,一般用户实在无法承受,这也就决定了它的实际使用范围的局限性。
IDE (Integrated Drive Electronics) 电子集成驱动器
IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。
●SAS 串行连接SCSI (Serial Attached SCSI,缩写为SAS) SAS是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。 SAS是并行SCSI接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,提供与串行ATA (Serial ATA,缩写为SATA)硬盘的兼容性。 SAS的接口技术可以向下兼容SATA。SAS系统的背板(Backplane)既可以连接具有双端口、高性能的SAS驱动器,也可以连接高容量、低成本的SATA驱动器。因为SAS驱动器的端口与SATA驱动器的端口形状看上去类似,所以SAS驱动器和SATA驱动器可以同时存在于一个存储系统之中。但需要注意的是,SATA系统并不兼容SAS,所以SAS驱动器不能连接到SATA背板上。 由于SAS系统的兼容性,IT人员能够运用不同接口的硬盘来满足各类应用在容量上或效能上的需求,因此在扩充存储系统时拥有更多的弹性,让存储设备发挥最大的投资效益。
●SATA的全称是Serial Advanced Technology Attachment(串行高级技术附件,一种基于行业标准的串行硬件驱动器接口),是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范,在IDF Fall 2001大会上,Seagate宣布了Serial ATA 1.0标准,正式宣告了SATA规范的确立。SATA规范将硬盘的外部传输速率理论值提高到了150MB/s,比PATA标准ATA/100高出50%,比ATA/133也要高出约13%,而随着未来后续版本的发展,SATA接口的速率还可扩展到2X和4X(300Mb/s和600Mb/s)。从其发展计划来看,未来的SATA也将通过提升时钟频率来提高接口传输速率,让硬盘也能够超频。
SATA接口需要硬件芯片的支持,例如Intel ICH5(R)、VIA VT8237、nVIDIA的MCP RAID和SiS964,如果主板南桥芯片不能直接支持的话,就需要选择第三方的芯片,例如Silicon Image 3112A芯片等,不过这样也就会产生一些硬件性能的差异,并且驱动程序也比较繁杂。
●SCSI小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。它是各种计算机与外部设备之间的接口标准
●SSD(solid state disk)固态硬盘
目前的硬盘(ATA 或 SATA)都是磁碟型的,数据就储存在磁碟扇区里,固态硬盘数据就储存在芯片里。
##########################################################################################################
Zip:
zip install.zip install/*
##########################################################################################################
CPU:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
#
# # 查看物理CPU个数
# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
#
# # 查看每个物理CPU中core的个数(即核数)
# cat /proc/cpuinfo| grep "cpu cores"| uniq
#
# # 查看逻辑CPU的个数
# cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
#
#
#
# 查看内 存信息
# # cat /proc/meminfo
##########################################################################################################