查看当前操作系统内核信息 、发行版本
uname -a #查看内核信息
cat /etc/issue #查看系统发行版本
重定向
将屏幕输出的信息重定向输出到某个文件。
重定向符号
> 输出重定向到一个文件或设备 覆盖原来的文件
>! 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件,旧数据保留
< 输入重定向到一个程序 即将程序A的输出可以重定向输入到程序B,作为B的输入
标准错误重定向符号
2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
>& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell
|& 将一个标准错误 管道 输送 到另一个命令作为输入
在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
示例
[test @test test]# ls -al 1> list.txt 2> list.err
将屏幕显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err
[test @test test]# ls -al 1> list.txt 2> &1
把stdout定位到list.txt ,再把stderr定位到list.txt.
即将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!
[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。
参考:[LINUX]重定向
让进程后台运行:
如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。
&:加在一个命令的最后,可以把这个命令放在后台执行
nohup:不挂断的运行命令。即no hang up(不挂起)
让进程在后台不挂断的运行:
nohup command &
缺省情况下上述命令的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.log 2>&1 &
说明:
(1) 表示把标准输出(STDOUT)重定向到 那个文件,这里重定向到了myout.log
(2) & 表示在后台执行脚本
这样可以到达目的,但是,我们退出shell窗口的时候,必须用exit命令来退出,否则,退出之后,该进程也会随着shell的消失而消失(退出、关闭)
(3)2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出 , 为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。
(4)使用-u参数,使得python不启用缓冲。
nohup python -u test.py > myout.log 2>&1 &
python的输出有缓冲,导致python.log3并不能够马上看到输出。加-u参数就可以了。
杀死进程
先用ps命令查看进程pid,再用kill命令杀死进程。
ps -aux
kill <进程号>
例:后台运行test_mysql.py脚本
4075是此进程的id
杀死T进程:
kill -9 pid
批量杀死进程
ps -ef|grep 进程名包含的部分字符|awk '{print $2}'|xargs kill -9
目录操作
新建、删除目录命令
新建:
mkdir [选项] 目录名
-p选项:递归建立所需目录
剪切粘贴
将source目录或文件剪切到dest目录或文件:
mv [options] source dest
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
删除:
rm [选项] 文件名
例如:删除backup文件夹
1 删除文件夹的内容包括文件夹:
rm -rf 文件夹的名字 (-r 是 循环的意思, f是不询问的意思)
2 .删除文件夹的内容不包括文件夹:
rm -rf 文件夹的名字/* (后面加上/*表示删除内容不删除文件夹)
3、清空当前文件夹下的所有文件
在当前文件夹执行命令:
rm -rf *
4、rm反向删除文件(删除指定文件之外的文件)
法一:
shopt -s extglob (打开extglob模式) 关闭:shopt -u extglob
rm -fr !(file1) # 删除除file1外的所有文件
rm -rf !(file1|file2) # 删除除file1、file2外的所有文件
法二:
ls | grep -v keepfile | xargs rm # 删除keep文件之外的所有文件
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件
参考:Linux反选删除文件
返回到linux系统根目录
cd /
此时用ls命令,会看到一个home文件夹,home文件夹中存放linux系统下所有用户名。
返回到当前用户的Home目录
cd ~
返回上一级目录
cd ..
返回上两级目录
cd ../..
查看进程信息
显示内存中所有进程详细信息
ps -aux
若是只用ps,只能看到当前终端的进程信息。 ps -aux可以查看内存中所有进程的信息。
查询某个进程信息
ps -aux | grep <进程号>
ps -aux命令显示的结果中各字段的含义:
USER:该 process 属于那个使用者账号的
PID :该 process 的号码
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令
参考:linux命令大全之ps命令详解(查看进程结果)
linux上进程有5种状态:
- 运行(正在运行或在运行队列中等待)
- 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
- 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
- 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
- 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.
杀死T进程:
kill -9 pid
文件操作
查看指定文件的大小
du -h 文件名
例如:
du -h 1.jpg
新建文件
touch 文件名
解压缩文件
*.tar.gz文件解压缩命令:
1、压缩命令:
命令格式:tar -zcvf 压缩文件名.tar.gz 被压缩文件名
例如:
tar -cvzf Driver_license.tar.gz Driver_license
可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。
2.解压缩命令:
命令格式:tar -zxvf 文件名.tar.gz
解压缩后的文件只能放在当前的目录。
解压zip文件:
unzip test.zip # 解压到当前文件夹
unzip -o test.zip -d tmp/ # 解压到tmp文件夹下
查找某个文件
find / -name 文件名
按条件删除文件
find . -name "01*.jpg" | xargs rm # 删除当前目录下01开头jpg结尾的所有文件
find . -name "00[2-9]*.jpg" | xargs rm # 删除当前目录下00开头第三位是2到9中任一个数且jpg结尾的所有文件
如果没有可以删除的文件,就会提示:
rm: missing operand
Try ‘rm --help’ for more information.
删除指定目录下大小为0的文件
find 文件名 -size 0 -print0 |xargs -0 rm
例如删除当前目录下大小为0的文件:
find . -size 0 -print0 |xargs -0 rm
参考:Linux下find命令详解
Linux中find命令-path -prune用法详解
Linux之通配符
批量拷贝文件
格式:
find path1 -name "jpg" | xargs cp -t path2
将path1下所有较jpg的文件拷贝到path2
例如:
find ./ ocr_train_data/ -name "*.jpg" | xargs cp -t ocr_train_data_merge20_and_true/
查看文档行数:
wc -l <文件名>
截取文件指定行
使用sed命令。sed是非交互式的编辑器。默认情况下,所有的输出行都被打印到屏幕上。
例如:截取5-10行,并重新输入到另一个文件中
sed -n '5,10p' filename > another_filename
-n:不在屏幕上打印
p:打印行
整个命令就是,打印文件的第5-10行,但是不在屏幕上打印,重定向输出到另一个文件中。
删除文件指定行
例如:删除文件的第1、2行
sed -i '1,2d' filename
-i : 直接在文件上编辑 (edit files in place)
d: 删除行
参考:sed命令详解
清空文件
命令格式:
> 文件名
例如:
> test.txt # 将test.txt文件的内容清空
查看当前目录下文件的属性
ls -lh #属主、权限、大小(带单位)、创建时间
加h才会在显示文件大小的时候加上单位。
查看当前目录下文件个数
显示当前目录下有多少个文件:
ls | wc -w
显示当前目录下jpg文件有多少个:
格式:
ls “目录” | grep “类型” | wc -l
例如:
ls | grep .jpg | wc -l
拷贝文件命令
格式:cp [-参数] 源文件(source) 目标文件(destination)
-r:递归复制文件夹下的子文件
-f:复制文件时,若目标地址有同名文件直接覆盖不询问。若是加了-f参数仍然询问是否覆盖,可能是cp命令被设置了别名,可用unalias cp
命令解除别名,不过这是一次性的。
例:复制myPro_lm文件夹到backup文件夹下。
cp a.txt a.txt.bak #备份a.txt文件在当前目录
移动文件命令
移动大批量文件时,直接用mv命令会报Argument list too long的错误,此时用如下命令:
find sourcePath/ -name "*.txt" -exec mv {} targetPath/ \;
#or
find sourcePath/ -type f -exec mv {} targetPath/ \;
注意:结束符不能省“ ;”
查看文件命令
cat filename :打开整个文件,直接跑到最后面
more filename:可以上下翻页,上下行移动显示
less filename:和more类似,但不能往回翻页
tail -f filename:实时显示最后一页,查看日志常用
head -n 100 :查看文首100行
tail -n 100:查看文尾100行,看最新日志
vi/vim filename:编辑并查看文件,若该文件不存在,会新建一个
tac:打开整个文件,倒序显示(从最后一行往前显示),不常用
head:查看文件头部
文件权限的查看和修改,属主修改
Linux的每个文件或目录都有自己的权限属性,只有有权限的用户才能对文件进行相应的读写执行操作。
1)查看权限
ls -l sources.txt
输出为9个字母,依次为User、Group、other的权限
r=4
w=2
x=1
rwx-4+2+1=7
所以,7表示可读可写可执行
421:赋予User可读权限,赋予Group可写权限,赋予other可执行权限
2)修改权限
chmod [-R] 权限 file/filefolder # -R:递归到子目录
例子:
chmod -R 777 filename #赋予所有用户该文件可读可写可执行权限
3)修改属主
chown [选项] 用户或组 文件
例如:
#sudo chown -R lim_ai:aiuser text2voice
其中,选项中,有一个很常用:
-R, --recursive:递归更改所有的子文件
用命令"ls -l"可以查看到文件的属主:
-rw-r--r-- 1 etcp root 483 09-06 22:10 Makefile
-rw-r--r-- 1 etcp root 2364 09-06 22:16 tcp_client.c
-rw-rw-r-- 1 etcp etcp 2936 09-06 22:16 tcp_client.o
-rw-r--r-- 1 etcp root 2637 09-06 22:16 tcp_server.c
-rw-rw-r-- 1 etcp etcp 3260 09-06 22:16 tcp_server.o
其中,显示etcp的这一列,就是该文件的属主,root是文件的用户组。
查看网络流量
sar -n DEV |10 #每隔1秒显示1次网络接口信息,显示10次
查看主机性能:
参考资料:
memcache stats命令详解
linux服务器性能查看
stats:查看服务器状态信息
top:查看CPU使用率
vmstat:判断系统是否繁忙
iostat:查看硬盘的I/O性能
例如: iostat -x 1 5 #每隔一秒显示一次,显示5次
free:查看内存
sar:全面的性能分析工具之一
cpu性能查看
1)查看物理cpu个数:
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
2)查看每个物理cpu中的core个数:
cat /proc/cpuinfo |grep "cpu cores"|wc -l
3)逻辑cpu的个数:
cat /proc/cpuinfo |grep "processor"|wc -l
物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下)
硬盘空间查看
1)查看硬盘及分区信息:
fdisk -l
2)查看文件系统的磁盘空间占用情况:
df -h
3)查看当前目录下所有一级子目录文件夹大小 并排序
du -h --max-depth=1 |sort
结果如下:
下载文件
命令:
wget(选项)(参数)
示例:
wget http://test.com/testfile.zip ->下载指定文件到当前文件夹
wget -O wordpress.zip http://test.com/download ->指定保存名字
wget --limit-rate=300k http://www.linuxde.net/testfile.zip ->限制下载速度
wget -c http://www.linuxde.net/testfile.zip ->断点续传
wget -b http://www.linuxde.net/testfile.zip ->后台下载
参考:Linux wget命令
防火墙的启动和关闭(Ubuntu16.04下)
1)查看防火墙状态
service iptables status
2)关闭、启动时禁用防火墙:
service iptables disable
3)启动防火墙
service iptables enable
4)重新加载防火墙
service iptables reload
5)设置端口
sudo ufw allow 8381
运行脚本方式
1)bash 脚本名
2)cd 脚本所在目录
./脚本名
3)sh 脚本名 .$1,$2
创建软连接
ln -s / /home/good/linkname
ln的链接分软链接和硬链接两种:
1、软链接就是:“ln –s 源文件 目标文件
”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式。
2、硬链接ln源文件目标文件,没有参数-s
, 会在选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
远程拷贝
scp 源文件 用户名@目的地ip:目的地文件夹
,例如:
scp /home/hadoop/hello.sh username@192.168.0.1:/home/lxxinn //将/home/hadoop/hello.sh文件拷贝到192.168.0.1主机的/home/lxxinn目录下
-r:递归拷贝子目录
参考:Linux scp命令
vim常用操作
模式切换
i:进入插入模式,可输入
esc:退出输入模式
显示行标
:set nu
查看隐藏字符
:set invlist
例如,^I
表示一个tab符,$
表示一个回车符等
:set nolist
可以回到正常的模式
跳转到某行
n shift+g # n表示行号
shift+g:末尾
删除行
dd:删除光标所在行
n dd:当前光标所在行起向下删除n行
删除字符
nx:删除当前光标往后n个字符
复制粘贴
复制:yy #复制光标所在行
多行复制:nyy #复制光标所在的向下n行,其中n为1、2、3……
在光标下一行粘贴:p #在光标所在行下方粘贴复制的行
在光标上一行粘贴:P
参考:Vim常用操作
多行缩进
向右缩进:行号1,行号2>,例如:8,9>
向左缩进:行号1,行号2<
左对齐
:{range}left [margin]
解释:
{range}指需要对那些行进行操作;
[margin]指最终该行首字符据屏幕左边缘的距离,若不指定,则默认紧靠屏幕左边缘。
例如:
:1,3 left # 将第1到第3行左对齐
:1,3 left 5 # 将第1到第3行左对齐,离左边缘5个空格
撤销
u:撤销刚才做的动作
ctrl+r:恢复你刚才撤销的动作
查找
查找某个字符串
在命令行模式下输入:`/字符串` # 例如查找hello这个字符串:`/hello`
小写n查看下一个匹配
大写N查看上一个匹配
从文件的结尾往开始处搜索:?要搜索的字符串或者字符
搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮:命令模式下,输入:nohlsearch(no highlight search缩写)简写:noh或者set noh
临时文件已存在问题
打开某个文件时,提示Swap file “.**.csv.swp” already exists!
解决方法:
1、用ll -a
命令显示当前文件夹信息
2、用rm
命令将临时文件删除,就不会再出现临时文件提示了。
修改编码格式
1、用vim打开数据文件,输入命令:
:set fileencoding
可以查看到vim当前打开文件的编码格式。
2、修改vim编码格式:
终端输入vi ~/.vimrc
,打开一个新文件(之前编辑过就会打开之前编辑的文件),输入如下内容:
set encoding=utf-8
fileencodings=ucs-bom,utf-8,cp936
重新打开文件即可。
合并两个或多个文件的内容
两个文件:
用vim打开file1.txt,并将光标移到到file1的最后一行
进行Vim命令模式,执行命令r file2.txt将file2的内容复制到file1的最后面
多个文件:
cat file1 file2 file3 > file # 将file1、file2、 file3的内容合并到file中
CP、MV后台实现机制
1、功能上的区别
mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中。
cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中。
2、从inode角度来区分
mv:会将存储于indoe索引节点上的文件元信息也移动到新文件中。
cp : 只会复制文件数据,不会复制inode索引节点上的文件元信息。
修改当前用户登录密码
passwd
参考文献:https://www.cnblogs.com/any91/p/6668446.html