程序语言相关
安装JAVA,JDK配置环境变量
1 2 3 4
| export JAVA_HOME=/usr/local/jdk1.8.0_121 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
|
安装cudnn,cuda配置的环境变量
1 2 3
| export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH export CUDA_HOME=/usr/local/cuda-8.0 export PATH=$CUDA_HOME/bin:$PATH
|
git 设置代理
1 2
| git config --global http.proxy http: git config --global https.proxy http:
|
离线pip安装python包
1.下载指定的包到指定文件夹
1
| pip install --download ~/python27/packs pandas(-r requirements.txt)
|
2.安装指定的离线包
1
| pip install --no-index --find-links=~/python27/packs/ pandas (-r requirements.txt)
|
Shell切割字符串
shell命令切割字符串
1 2 3 4
| -d 指定分隔符,如:按照“:”分割,-d: -c 提取第n个字节,如:-c5,表示提取每行的第5个字节,-c5-14,表示提取每行的第5-14个字节,-c1,5,14,表示提取第1、5、14个字节。 -f 指定输出的域 cut –d: -f1,2 //按照”:”来分割,并输出第1和2段
|
GC分析,虚拟机分析,调优常用命令
打印出GC Log信息
1
| --conf "spark.driver.extraJavaOptions=-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log"
|
一些常用的GC,Heap堆分析的命令
1 2 3 4 5
| jstat -gcutil pid [1s] GC用量及总量,可设置定时统计打印一次 jstat -class pid 类加载时间和量 jstat -gccause pid 最后一次GC的原因 jinfo -flags pid 查看vm的所有设置参数 jmap -histo pid 查看当前对象及其个数,内存用量
|
为JNI/JNA编译C文件
1 2
| gcc -fpic -c test.c gcc -shared -o libtest.so test.o
|
Linux JNA调用
Python 打包wheel
1
| python setup.py bdist_wheel
|
Python查看调用者
1 2 3 4 5
| import traceback
def fun(): s = traceback.extract_stack() print '%s Invoked me!'%s[-2][2]
|
Shell 并行执行
1 2 3 4 5 6 7 8 9 10 11
| 法一:(在有parallel的情况下) parallel -j 2 "sh reinstall-sub1.sh" "sh reinstall-sub2.sh"
法二:(& + wait) for i in {1..2} do { sh reinstall-sub$i.sh } & done wait
|
文件、目录相关
删除目录下符合条件的文件
1 2
| find ./ -name "CMakeCache.txt" | xargs rm -rf; TORCH_LUA_VERSION=LUA52 ./install.sh
|
查找一个或多个文件中是否含有某字符串
1
| strings ./xx.sh | grep "STR*"
|
查找包含某字符串的文件及字符串出现位置
1 2 3 4 5 6 7 8
| grep -rn "string" * grep -rn "string"
* : 表示当前目录所有文件,也可以是某个文件名 -r 是递归查找 -n 是显示行号 -R 查找所有文件包含子目录 -i 忽略大小写
|
1
| find ./ -name 'filenamepattern' | xargs grep 'string'
|
详情见Komiles
列出所有目录
查看各目录大小
1
| du -h --max-depth=1 # -h表示按MB显示,maxdepth=1表示只查看一层
|
删除目录下指定大小/范围大小的文件
1 2
| find . -size 0 -exec rm {} \; # 删除大小为0的空文件 find . -size +6k # 找出大小为[6k, 无穷大)的文件
|
查看和GPU有关的进程
文件、数据处理相关
tar打包与gzip压缩
tar打包参数:
1 2 3 4 5
| -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件
|
以及根据需要在压缩与解压时可选:
1 2 3 4 5 6
| -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 -f: 必须参数,使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
|
这就能理解,为什么解压.tar.gz
文件通常使用命令tar -zxvf xx.tar.gz
了,-z
参数是因为有gzip属性,-x
表示现在要解压,-v
显示解压过程,-f
是必须参数,后面接文件名。
1
| tar -czf cc.tar.gz *.cc # 将所有.cc后缀文件用tar打包,gzip压缩成cc.tar.gz
|
以及一些解压规则:
*.tar
用 tar -xvf
解压
*.gz
用 gzip -d
或者 gunzip
解压
*.tar.gz
和 *.tgz
用 tar -xzf
解压
*.bz2
用 bzip2 -d
或者用 bunzip2
解压
*.tar.bz2
用 tar -xjf
解压
*.Z
用 uncompress
解压
*.tar.Z
用 tar -xZf
解压
*.rar
用 unrar e
解压
*.zip
用 unzip
解压
以上主要参见Linux下的tar压缩解压缩命令详解,侵歉删。
gzip压缩保留源文件的方法:
1
| gzip –c filename > filename.gz
|
gzip解压缩保留源文件的方法:
1
| gunzip –c filename.gz > filename
|
gzip主要参数可通过gzip -h
调取查看。
gz和bz2解压命令
.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2
图片压缩
1 2 3
| sudo apt-get imagemagick convert -resize 100x100 from.jpg to.jpg convert -resize 50%x50% from.jpg to.jpg
|
Neural Artistic Style
1
| . --- . --- -- -- < > -- < > -- < >
|
统计代码行数
1 2 3 4 5 6 7 8
| 1.统计当前目录下,py文件数量: find . -name "*.py" |wc -l
2.统计当前目录下,所有py文件行数: find . -name "*.py" |xargs cat|wc -l
3.统计当前目录下,所有py文件行数,并过滤空行: find . -name "*.py" |xargs cat|grep -v ^$|wc -l
|
合并文件,拼接文件内容
1 2
| cat file1 file2 > file.bak find . -name "*.py" |xargs cat > merge.txt
|
删除文件中某一行文字
删除文件中某一行文字,比如说删除known_hosts
中的 192.168.1.28
的ssh key:
1
| sed -i -e '/192.168.1.28/d' .ssh/known_hosts
|
sed教程:http://www.runoob.com/linux/linux-comm-sed.html
比较文件差异
1
| diff log2014.log log2013.log -y -W 50
|
读取文本行
1 2 3 4 5 6 7 8 9
| for line in $(cat data.dat) do echo "File:${line}" done
for line in `cat data.dat` do echo "File:${line}" done
|
Shell选取文件指定行
1 2 3 4 5
| 读取前几行 for line in $(head -n 3 data.dat)
读取中间几行,如第4行到第6行: sed -n '4,6p' filename
|
查看大页数量
1 2 3
| grep -i HugePages_Total /proc/meminfo or cat /proc/sys/vm/nr_hugepages
|
大数据处理相关
yarn 终结application
1
| yarn application -kill <application_ID>
|
网络相关
防火墙的开闭
1 2 3 4 5 6 7 8
| 比如hadoop中会出现: hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 192.168.1.28:50010 很可能是连接被防火墙阻断了,下面是开闭防火墙的命令。
systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service
|
使用vnstat检测服务器网速,网络流量
安装vnstat
1 2 3 4 5 6 7 8 9
| ./configure --prefix=/usr --sysconfdir=/etc && make cp -v vnstat vnstatd ../bin/ cp -v cfg/vnstat.conf ~/.vnstatrc mkdir ~/.vnstat
替换 .vnstatrc 中的 DatabaseDir "/pathtomyhomedir/.vnstat"
vnstat --create -i eth0 # 构建eth0网卡的数据库 vnstat -l -i eh0 # 监控eth0网卡的流量
|
SSH登录并执行命令
1
| ssh xx@xx "pwd; ls; ll -a"
|
Useful Links