Linux命令使用笔记

离线后台跑程序

nohup python -u example.py >outfile.txt&

将程序的输出保存在某个文件

python train.py example>outfile.txt

查看当前正在运行的程序

ps -u

查看用户liuying正在运行的程序

ps -u liuying

终止某个程序的运行

ps -u liuying (查看该程序的 PID)
kill 28260(PID)

在服务器上下载网页上的文件, wget

网页:
http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html
用法:

wget -b --http-user='zhangdo@uestc.edu.cn' --http-password='1O|)8f+%Z8' -directory-prefix='/home/liuying/download' --    tries=100 http://megaface.cs.washington.edu/dataset/download/content/identities_0.tar.gz 

不需要用户密码的:
wget -b
http://shannon.cs.illinois.edu/DenotationGraph/data/graph.tar.gz

其中,

  • wget:下载文件的工具
  • -b:后台下载
  • –http-user:用户名
  • –http-password:用户密码
  • -directory-prefix:保存目录
  • –tries:下载尝试次数

剪切文件

mv  /home/liuying/after_ori_data.txt  /home/liuying/dataset 

查看内存

df -l  /home/liuying
df -l -Bg  /home/liuying

解压

tar  zxvf  file.tar
tar -xvf file.tar   //这个常用
gunzip  file.gz
tar  zxvf  file.tar.gz
unzip file.zip

删除

rm  -rf  目录   //删除文件夹
rm  -f  目录  //删除文件

查看文件夹下面的文件个数

ls -l |grep "^-"|wc -l

撤销

u 撤销, ctrl+r 反撤销(命令模式下)

将文件夹下面的所有文件名存在txt文件中

ls /home/liuying/image_dataset/flickr30k/flickr30k-images/ >         
/home/liuying/workspace/image_caption/feature_extr/flickr30k.txt

这个是把路径都存下来了
find pwd/examples/images -type f -
exec echo {} \; > examples/_temp/temp.txt

vim 查找

命令模式下,按 / ,输入要查找的内容,回车. n:下一个,N:上一个

screen使用 后台运行

screen  -S  img_cap        //新建一个img_cap的screen
ctrl + a + d        //退出当前screen
screen  -r  img_cap        //回到img_cap的作业
screen  -d  img_cap        //远程detachimg_cap作业 
screen  -wipe        //检查目前所有的screen作业,并删除无法使用的screen作业

如果screen -r img_cap,发现提示attached,则
先 screen -d img_cap,再screen -r img_cap

screen -ls 查看当前的screen作业

查看当前的screen进程,并关闭

查看

ps  -ef|greap  screen

关闭

kill  -s 9 1234(PID)

从github上面获取文件

git clone 地址.git

从一台服务器复制文件到另一台服务器(-P 端口号)

scp -P 88  Flickr8k_Dataset.zip liuying@222.197.181.28:/home/liuying/
  • -r 对文件夹进行复制
  • -v 显示进度

安装在本地

pip install --user nltk

ps用法

ps -aux | grep liuying    查看跟liuying有关的进程的所有信息

输出重定向

python evaluate_coco.py  >out.txt        覆盖原有内容
python evaluate_coco.py  >>out.txt        在原来内容里面添加

直接在命令行下面执行python语言,分号隔开

python -c "from deepst.datasets import stat;         
stat('BJ16_M32x32_T30_InOut.h5')"

配置

vim ~/.bashrc 
source ~/.bashrc 

复制粘贴文件到当前目录并重命名

cp  check.py  evaluation.py

遇到 setup.py 文件

python setup.py build
python setup.py install

查看当前路径

pwd

查看系统盘内存

sudo du -h --max-depth=1
df -h

查看文件开头结尾

head a.txt
tail a.txt

截取文件部分

awk '{if($1<1000)print}' a.txt > b.txt //将a.txt中第一列小于1000的所有行写入b.txt

vim 编辑器的使用

查看进程是否在跑

ps aux | grep 20900

查看当前文件夹下面文件个数

ls -1 (数字) | grep "^" | wc -l (英文)

修改服务器显示的名字(如new416)

vim !/.bashrc
第二个 PS1 后面,替换 \h

修改服务器主机名字

修改 /etc/hostname 和 /etc/hosts,保证修改的名字是一样
再重启服务器:reboot(需要权限)

ps 命令

ps -A (显示所有进程,包括终端的)
ps -a (显示不与 terminal 有关的所有进程)
ps -u (显示自己的进程)

查看文件类型 file

file filename (查看没有后缀的文件的基本类型)

查找,grep 命令

grep -i "train" train.py (在 train.py 中查找字符串 "train")
grep -r "train" (在该文件夹下面查找字符串 "train")

查找,find 命令

find -iname "train.py" (在该目录下面,查找所有 train.py 文件)

对文件进行排序, sort 命令

sort names.txt (对文件内容进行排序,升序)
sort -t names.txt (对文件内容进行排序,降序)

ls, 按修改时间升序列出文件

ls -ltr # 升序
ls -lt # 降序

查看指定用户的进程

top -u liuying (只查看 liuying 的进程)

查看磁盘使用情况

df -h

修改密码

passwd

查找,定位文件位置

locate train.py

查看文件开头末尾 head tail

tail log.txt (显示文件最后10行文本)
tail -n 20 log.txt (显示文件最后20行文本)

查看大文件时,可以用 less 进行查看

less lot_train.txt (在不加载整个文件的前提下显示文件内容)

切换用户,su

su xuying (切换到 xuying 的目录,需要输入密码)

查看当前登录该服务器的用户

who (将显示登录服务器的用户,以及 IP)
who am I (显示当前自己的信息)

比较两个文件的差别

diff file1 file2

查看文件夹下面的文件个数

ls -l |grep "^-"|wc -l

查看目录下面每个文件的行数

wc -l *

在当前目录下的所有文件中进行查找

grep "want to find" rn .

查看自己的进程

ps
ps -aux 查看所有进程

ctrl+z暂停,fg恢复

查找进程

ps -ef | grep "key word"

取出前面m行的数据作为新的文件

head -m input > output

取出后面m行的数据作为新的文件

tail -m input > output

取出中间的m到n行数据作为新的文件

head -n input > output $$ tail - (n-m) output > output1

批量修改一个文件中的变量

sed -i "s/geolife/sigapore/g" ./orgnize_data_y.py

sh copy.sh target_path 复制整个目录文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
if [ $# -ne 1 ];then
echo "please input a target fold path"
exit 1
fi

from_path=`dirname $0`
to_path=$1
mkdir -p $to_path
cp $from_path/* $to_path

function sub_cp()
{
sub_fold=$1
sh $from_path/$sub_fold/copy.sh $to_path/$sub_fold
}
cd $to_path
mkdir log
cd -

自动发送邮件

1
2
3
4
5
6
7
#!/bin/bash
# -*- coding:utf-8 -*-

yesterday=`date -d yesterday +%Y-%m-%d`

#先发给自己看看
echo "" | mail -s ${yesterday}"-拼车指标" -a test.txt liuyinggrace_i@didichuxing.com

awk 取一列数据

awk "{print $2}" total > time

sed -i 含有斜杠

sed -i "s/\\\N/0/g" a.txt (将\N变为0)

利用cut提取一列数据(可以是\t分割的数据)

cut -f 1,3 final_data.txt  > final_passenget.txt #第一列和第三列

复制服务器上的数据到本地

scp -P 1024 liuying@121.48.158.72:/mnt/disk2/liuying/T-ITS/dataset/geolife/geolife_total  ./

根据pid查看进程完整信息

ll /proc/30010
ll /proc/30010/cwd  查看运行的目录

两个文件 按行拼接

paste -d delimiter file1.txt file2.txt > out.txt

安装tensorflow

pip install tensorflow-gpu==1.2.0

递归创建多重目录文件

mkdir -p file1/file2

pdf 转 eps

pdf2ps -eps abc.pdf

awk交换文件两列

awk ' { t = $3; $3 = $4; $4 = t; print; } ' beijing_test> after_beijing_test

sqlite3创建数据

1
2
3
4
5
6
7
8
9
10
11
12
13
以singapore数据集为例:

1. 新建一个db文件:sqlite3 xxx.db

2. 创建一个表:CREATE TABLE singapore (id integer, time integer, lat float, lng float);

3. 设置同一行的不同单词间的间隔符:.separator " "(这是设成空格)

4. 导入文件:.import xxx.txt singapore

5. 检验是否导入成功,比如:select * from singapore where id < 1;

6. 成功后退出:.quit

两个文件按行拼接

paste aa bb > cc

对文件排序

sort aa
sort -n 830.txt > 830_sort.txt  按数值
sort -k1,1n -k2,2n 830.txt > 830_sort.txt 第一列和第二列都按照数值

使用git

git init    #将当前文件初始化git
git remote add origin git@github.com:liuyinglxl/JIANZHI_offer_python_implement.git    #绑定github

查看nohup信息

history | grep nohup

kill 多进程

ps -ef | grep random_sample.py | grep -v grep | cut -c 9-15|xargs kill -9

解释:“ps - ef”是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep tt.py”的输入。

  “grep tt.py”的输出结果是,所有含有关键字“tt.py”的进程

  “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

  “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

  “xargs kill -9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该令。

“kill -9”会强行杀掉指定进程

查看当前文件夹下面的文件数量

ls -l | grep "^-" | wc -l

求均值

cat mlp_lstm_singapre_10step_pre_file_error | awk '{sum+=$1} END {print "Average = ", sum/NR}'

在vim下面将cat批量改为god

%s/cat/dog

在当前服务器切换到另一个服务器

1
2
ssh dev01
ssh liuying@dev01

Linux下面python创建虚拟环境

1
2
3
4
5
6
# 建立虚拟环境
virtualenv -p python2.7 ~/test_env
# 使用虚拟环境
source ~/text_env/bin/activate
# 退出虚拟环境
deactive

awk 获取满足条件的数据

1
2
# 对 a.txt 中第二列小于100的行,输出其对应的第一二三四列,作为新的文件 b.txt
awk '$2<100 {print $1, $2, $3, $4}' a.txt > b.txt

虚拟环境配套安装

  1. 安装虚拟环境

    virtualenv -p python2.7 ~/env

    或者 virtualenv -p /usr/bin/python2.7 venv

  2. 安装 anconda

    1. 下载要安装的包,地址 https://www.anaconda.com/download/#linux

    2. wget https://repo.anaconda.com/archive/Anaconda2-5.3.1-Linux-x86_64.sh

    3. bash Anaconda2-5.3.1-Linux-x86_64.sh

    4. 如果ipython运行不成功,则需要自己在 ~/.bashrc 中加入路径:

      export PATH=/home/liuying/anaconda2/bin:$PATH

    5. 激活配置文件 source ~/.bashrc

  3. 安装 tensorflow

    pip install –upgrade tensorflow-gpu==1.4 (这个支持 CUDA8,如果安装1.5,则必须要CUDA9)

linux 终端中文txt乱码问题

1
2
3
# 在linux终端下输入:
iconv -f gb18030 -t utf8 1.txt -o 2.txt
# 其中1.txt是原文件,2.txt是转换后的目标文件