文章目录
  1. 1. 程序语言相关
    1. 1.1. 安装JAVA,JDK配置环境变量
    2. 1.2. 安装cudnn,cuda配置的环境变量
    3. 1.3. git 设置代理
    4. 1.4. 离线pip安装python包
    5. 1.5. Shell切割字符串
    6. 1.6. GC分析,虚拟机分析,调优常用命令
    7. 1.7. 为JNI/JNA编译C文件
    8. 1.8. Python 打包wheel
    9. 1.9. Python查看调用者
      1. 1.9.1. Shell 并行执行
  2. 2. 文件、目录相关
    1. 2.1. 删除目录下符合条件的文件
    2. 2.2. 查找一个或多个文件中是否含有某字符串
    3. 2.3. 查找包含某字符串的文件及字符串出现位置
    4. 2.4. 列出所有目录
    5. 2.5. 查看各目录大小
    6. 2.6. 删除目录下指定大小/范围大小的文件
    7. 2.7. 查看和GPU有关的进程
  3. 3. 文件、数据处理相关
    1. 3.1. tar打包与gzip压缩
    2. 3.2. gz和bz2解压命令
    3. 3.3. 图片压缩
    4. 3.4. Neural Artistic Style
    5. 3.5. 统计代码行数
    6. 3.6. 合并文件,拼接文件内容
    7. 3.7. 删除文件中某一行文字
    8. 3.8. 比较文件差异
    9. 3.9. 读取文本行
    10. 3.10. Shell选取文件指定行
    11. 3.11. 查看大页数量
  4. 4. 大数据处理相关
    1. 4.1. yarn 终结application
  5. 5. 网络相关
    1. 5.1. 防火墙的开闭
    2. 5.2. 使用vnstat检测服务器网速,网络流量
    3. 5.3. SSH登录并执行命令
  6. 6. Useful Links

程序语言相关

安装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://xxx.xxx.com:port
git config --global https.proxy http://xxx.xxx.com:port
离线pip安装python包

1.下载指定的包到指定文件夹

1
pip install --download ~/python27/packs pandas(-r requirements.txt) # linux

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,表示提取第1514个字节。
-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
ls -d */
查看各目录大小
1
du -h --max-depth=1  # -h表示按MB显示,maxdepth=1表示只查看一层
删除目录下指定大小/范围大小的文件
1
2
find . -size 0 -exec rm {} \;   # 删除大小为0的空文件
find . -size +6k # 找出大小为[6k, 无穷大)的文件
查看和GPU有关的进程
1
fuser -v /dev/nvidia*

文件、数据处理相关

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

以及一些解压规则:

*.tartar -xvf 解压
*.gzgzip -d 或者 gunzip 解压
*.tar.gz*.tgztar -xzf 解压
*.bz2bzip2 -d 或者用 bunzip2 解压
*.tar.bz2tar -xjf 解压
*.Zuncompress 解压
*.tar.Ztar -xZf 解压
*.rarunrar e 解压
*.zipunzip 解压

以上主要参见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
python neural_style.py --checkpoint-output 400out/out%s.jpg --checkpoint-iterations 50 --iterations 1000 --content <content file> --styles <style file> --output <output file>
统计代码行数
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"
计算机相关 | CS.Related