linux 经常使用命令

认识Linux系统及基础命令

Linux中一切皆文件
内核 + 文件系统 + shell = Linux
 文件系统结构:文件进行读写
 Linux是一个树形的文件系统结构
 第一层目录:/ 整个文件系统的访问入口

重要的二级目录

bin:存储Linux上经常使用的命令
dev:放置设备的目录
etc:Linux配置文件目录
home:普通用户会在该目录下建立属于本身的目录
root:管理员用户家目录
media:即插即用型的设备的挂载目录,光盘自动挂载到media目录下
mnt:挂载目录
将硬盘中的分区(C/D/E)与目录进行关联
/datas/cpan 《- C分区
/datas/Dpan 《- D分区
/datas/Epan 《- E分区
opt:可选目录
usr:放安装的应用程序
sbin:只有管理员才能执行的命令
var:Linux日志默认存储目录

Linux 基础命令

cd命令

用于切换当前目录,它的参数是要切换到的目录的路径,能够是绝对路径,也能够是相对路径。
cd /root/Docements # 切换到目录/root/Docements  
cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录    
cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录

ls命令

ls 用于列举一个目录或者文件
ls -a 显示全部文件及目录,包括隐藏文件
ls -l 显示文件详细信息
eg. ls -a
  • grep命令html

    该命令经常使用于分析一行的信息,若当中有咱们所须要的信息,就将该行显示出来,该命令一般与管道命令一块儿使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为
    -a :将binary文件以text文件的方式查找数据  
    -c :计算找到‘查找字符串’的次数  
    -i :忽略大小写的区别,即把大小写视为相同  
    -v :反向选择,即显示出没有‘查找字符串’内容的那一行  
    # 例如:  
    # 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色  
    grep --color=auto 'MANPATH' /etc/man.config  
    # 把ls -l的输出中包含字母file(不区分大小写)的内容输出  
    ls -l | grep -i file

find命令

find是一个基于查找的功能很是强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,因此在这里将给把它们分类列出,它的基本语法以下:java

find [PATH] [option] [action]  
  
# 与时间有关的参数:  
-mtime n : n为数字,意思为在n天以前的“一天内”被更改过的文件;  
-mtime +n : 列出在n天以前(不含n天自己)被更改过的文件名;  
-mtime -n : 列出在n天以内(含n天自己)被更改过的文件名;  
-newer file : 列出比file还要新的文件名  
# 例如:  
find /root -mtime 0 # 在当前目录下查找今天以内有改动的文件  
  
# 与用户或用户组名有关的参数:  
-user name : 列出文件全部者为name的文件  
-group name : 列出文件所属用户组为name的文件  
-uid n : 列出文件全部者为用户ID为n的文件  
-gid n : 列出文件所属用户组为用户组ID为n的文件  
# 例如:  
find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出全部者为ljianhui的文件  
  
# 与文件权限及名称有关的参数:  
-name filename :找出文件名为filename的文件  
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件  
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:通常文件(f)、设备文件(b、c)、  
             目录(d)、链接文件(l)、socket(s)、FIFO管道文件(p);  
-perm mode :查找文件权限恰好等于mode的文件,mode用数字表示,如0755;  
-perm -mode :查找文件权限必需要所有包括mode权限的文件,mode用数字表示  
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示  
# 例如:  
find / -name passwd # 查找文件名为passwd的文件  
find . -perm 0755 # 查找当前目录中文件权限的0755的文件  
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte

cp命令

该命令用于复制文件,copy之意,它还能够把多个文件一次性地复制到一个目录下,它的经常使用参数以下:node

-a :将文件的特性一块儿复制  
-p :连同文件的属性一块儿复制,而非使用默认方式,与-a类似,经常使用于备份  
-i :若目标文件已经存在时,在覆盖时会先询问操做的进行  
-r :递归持续复制,用于目录的复制行为  
-u :目标文件与源文件有差别时才会复制
eg. 
cp -a file1 file2 #连同文件的全部特性把文件file1复制成文件file2  
cp file1 file2 file3 dir #把文件file一、file二、file3复制到目录dir中

mv命令

该命令用于移动文件、目录或改名,move之意,它的经常使用参数以下:mysql

-f :force强制的意思,若是目标文件已经存在,不会询问而直接覆盖  
-i :若目标文件已经存在,就会询问是否覆盖  
-u :若目标文件已经存在,且比目标文件新,才会更新 

mv file1 file2 file3 dir # 把文件file一、file二、file3移动到目录dir中  
mv file1 file2 # 把文件file1重命名为file2

rm命令

该命令用于删除文件或目录,remove之间,它的经常使用参数以下:linux

-f :就是force的意思,忽略不存在的文件,不会出现警告消息  
-i :互动模式,在删除前会询问用户是否操做  
-r :递归删除,最经常使用于目录删除,它是一个很是危险的参数
eg.
rm -i file # 删除文件file,在删除以前会询问是否进行该操做  
rm -fr dir # 强制删除目录dir中的全部文件

ps命令

该命令用于将某个时间点的进程运行状况选取下来并输出,process之意,它的经常使用参数以下:redis

-A :全部的进程均显示出来  
-a :不与terminal有关的全部进程  
-u :有效用户的相关进程  
-x :通常与a参数一块儿使用,可列出较完整的信息  
-l :较长,较详细地将PID的信息列出  
eg.
ps aux # 查看系统全部的进程数据  
ps ax # 查看不与terminal有关的全部进程  
ps -lA # 查看系统全部的进程数据  
ps axjf # 查看连同一部分进程树状态

kill命令

该命令用于向某个工做(%jobnumber)或者是某个PID(数字)传送一个信号,它一般与ps和jobs命令一块儿使用,它的基本语法以下:sql

kill -signal PID  
1:SIGHUP,启动被终止的进程  
2:SIGINT,至关于输入ctrl+c,中断一个程序的进行  
9:SIGKILL,强制中断一个进程的进行  
15:SIGTERM,以正常的结束进程方式来终止进程  
17:SIGSTOP,至关于输入ctrl+z,暂停一个进程的进行
eg.

# 以正常的结束进程方式来终于第一个后台工做,可用jobs命令查看后台中的第一个工做进程  
kill -SIGTERM %1   
# 从新改动进程ID为PID的进程,PID可用ps命令经过管道命令加上grep命令进行筛选得到  
kill -SIGHUP PID

killall命令

该命令用于向一个命令启动的进程发送一个信号,它的通常语法以下:shell

-i :交互式的意思,若须要删除时,会询问用户  
-e :表示后面接的command name要一致,但command name不能超过15个字符  
-I :命令名称忽略大小写  
# 例如:  
killall -SIGHUP syslogd # 从新启动syslogd

file命令

该命令用于判断接在file命令后的文件的基本数据,由于在Linux下文件的类型并非之后缀为分的,因此这个命令对咱们来讲就颇有用了,它的用法很是简单,基本语法以下:vim

file filename  
#例如:  
file ./test

tar命令

该命令用于对文件进行打包,默认状况并不会压缩,若是指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。它的经常使用参数以下:centos

-c :新建打包文件  
-t :查看打包文件的内容含有哪些文件名  
-x :解打包或解压缩的功能,能够搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出如今同一条命令中  
-j :经过bzip2的支持进行压缩/解压缩  
-z :经过gzip的支持进行压缩/解压缩  
-v :在压缩/解压缩过程当中,将正在处理的文件名显示出来  
-f filename :filename为要处理的文件  
-C dir :指定压缩/解压缩的目录dir  

压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称  
查询:tar -jtv -f filename.tar.bz2  
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

cat命令

该命令用于查看文本文件的内容,后接要查看的文件名,一般可用管道与more和less一块儿使用,从而能够一页页地查看数据。例如:

cat text | less # 查看text文件中的内容  
# 注:这条命令也可使用less text来代替

chgrp命令

该命令用于改变文件所属用户组,它的使用很是简单,它的基本用法以下:

chgrp [-R] dirname/filename  
-R :进行递归的持续对全部文件和子目录更改  
# 例如:  
chgrp users -R ./dir # 递归地把dir目录下中的全部文件和子目录下全部文件的用户组修改成users

chown命令

该命令用于改变文件的全部者,与chgrp命令的使用方法相同,只是修改的文件属性不一样,再也不详述。

chmod命令

该命令用于改变文件的权限,通常的用法以下:

chmod [-R] xyz 文件或目录  
-R:进行递归的持续更改,即连同子目录下的全部文件都会更改

vim命令

该命令主要用于文本编辑,它接一个或多个文件名做为参数,若是文件存在就打开,若是文件不存在就以该文件名建立一个文件。

1. vim模式

正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空

插入模式(按i进入) 左下角显示--INSERT--

可视模式(按v进入) 左下角显示--VISUAL--

替换模式(按r或R开始) 左下角显示 --REPLACE--

命令行模式(按:或者/或者?开始)

ex模式 没用过,有兴趣的同窗能够自行了解
2. 打开文件

# 打开单个文件

vim file   

# 同时打开多个文件

vim file1 file2..
# 在vim窗口中打开一个新文件

:open [file]      

【举个例子】

# 当前打开1.txt,作了一些编辑没保存

:open!         放弃这些修改,并从新打开未修改的文件

# 当前打开1.txt,作了一些编辑并保存

:open 2.txt    直接退出对1.txt的编辑,直接打开2.txt编辑,省了退出:wq再从新vim 2.txt的步骤
 

# 打开远程文件,好比ftp或者share folder

:e ftp://192.168.10.76/abc.txt

:e \qadrive\test\1.txt


# 以只读形式打开文件,可是仍然可使用 :wq! 写入

vim -R file

# 强制性关闭修改功能,没法使用 :wq! 写入

vim -M file
3. 插入命令

i 在当前位置生前插入

I 在当前行首插入

a 在当前位置后插入

A 在当前行尾插入

o 在当前行以后插入一行

O 在当前行以前插入一行
4. 查找命令

最简单的查找

/text  查找text,按n健查找下一个,按N健查找前一个。

?text  查找text,反向查找,按n健查找下一个,按N健查找前一个。

vim中有一些特殊字符在查找时须要转义  .*[]^%/?~$

:set ignorecase  忽略大小写的查找

:set noignorecase  不忽略大小写的查找

快速查找,不须要手打字符便可查找

*        向后(下)寻找游标所在处的单词

#        向前(上)寻找游标所在处的单词
5. 替换命令

~  反转游标字母大小写

r<字母>           将当前字符替换为所写字母

R<字母><字母>...  连续替换字母

cc    替换整行(就是删除当前行,并在下一行插入)

cw    替换一个单词(就是删除一个单词,就进入插入模式),前提是游标处于单词第一个字母(可用b定位)

C     (大写C)替换至行尾(和D有所区别,D是删除(剪切)至行尾,C是删除至行位并进入插入模式)

:s/old/new/    用old替换new,替换当前行的第一个匹配

:s/old/new/g   用old替换new,替换当前行的全部匹配

:%s/old/new/   用old替换new,替换全部行的第一个匹配

:%s/old/new/g  用old替换new,替换整个文件的全部匹配

:10,20 s/^/ /g 在第10行至第20行每行前面加四个空格,用于缩进。

ddp    交换光标所在行和其下紧邻的一行。

xp  交换相邻两个字母的顺序
6. 撤销与重作

u 撤销(Undo)

U 撤销对整行的操做
 
Ctrl + r 重作(Redo),即撤销的撤销。
7. 删除命令

须要说明的是,vim 其实并无单纯的删除命令,下面你或许理解为剪切更加准确。

以字符为单位删除

x   删除当前字符

3x  删除当前字符3次

X   删除当前字符的前一个字符。

3X  删除当前光标向前三个字符

dl  删除当前字符, dl=x

dh  删除前一个字符,X=dh

D   删除当前字符至行尾。D=d$

d$  删除当前字符至行尾

d^  删除当前字符以前至行首

以单词为单位删除

dw  删除当前字符到单词尾

daw 删除当前字符所在单词

以行为单位删除

dd  删除当前行

dj  删除下一行

dk  删除上一行

dgg  删除当前行至文档首部

d1G  删除当前行至文档首部

dG   删除当前行至文档尾部

kdgg  删除当前行以前全部行(不包括当前行)

jdG   删除当前行以后全部行(不包括当前行)

10d     删除当前行开始的10行。

:1,10d  删除1-10行

:11,$d  删除11行及之后全部的行

:1,$d   删除全部行

J     删除两行之间的空行,其实是合并两行。
8. 复制粘贴

普通模式中使用y复制

yy   复制游标所在的整行(3yy表示复制3行)

y^   复制至行首,或y0。不含光标所在处字符。

y$   复制至行尾。含光标所在处字符。

yw   复制一个单词。

y2w  复制两个单词。

yG   复制至文本末。

y1G  复制至文本开头。

普通模式中使用p粘贴

p(小写):表明粘贴至光标后(下边,右边)

P(大写):表明粘贴至光标前(上边,左边)
9. 剪切粘贴

dd    其实就是剪切命令,剪切当前行

ddp   剪切当前行并粘贴,可实现当前行和下一行调换位置

正常模式下按v(逐字)或V(逐行)进入可视模式

而后用jklh命令移动便可选择某些行或字符,再按d便可剪切

ndd 剪切当前行以后的n行。利用p命令能够对剪切的内容进行粘贴

:1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。

:1, 10 m 20 将第1-10行移动到第20行以后。
10. 退出保存

:wq 保存并退出

ZZ 保存并退出

:q! 强制退出并忽略全部更改

:e! 放弃全部修改,并打开原来文件。
 
ZZ 保存并退出

:sav(eas) new.txt  另存为一个新文件,退出原文件的编辑且不会保存

:f(ile) new.txt    新开一个文件,并不保存,退出原文件的编辑且不会保存
以字符为单位移动

h   左移一个字符

l   右移一个字符

k   上移一个字符

j   下移一个字符

 

# 【定位字符】f和F

fx    找到光标后第一个为x的字符

3fd   找到光标后第三个为d的字符

 

F   同f,反向查找。

以行为单位移动

# 10指代全部数字,可任意指定

10h  左移10个字符

10l  右移10个字符

10k  上移10行

10j  下移10行
 

$   移动到行尾

3$  移动到下面3行的行尾

以单词为单位移动

w  向前移动一个单词(光标停在单词首部)

b  向后移动一个单词

e,同w,只不过是光标停在单词尾部

ge 同b,光标停在单词尾部。

以句为单位移动

(   移动到句首

)   移动到句尾

跳转到文件的首尾

gg  移动到文件头。 = [[  == ``

G   移动到文件尾。 = ]]

其余移动方法

^   移动到本行第一个非空白字符上。

0   移动到本行第一个字符上(能够是空格)

使用 具名标记 跳转,我的感受这个很好用,由于能够跨文件。

使用 ma ,能够将此处标记为 a,使用 'a 进行跳转

使用 :marks 能够查看全部的标记

使用 :delm!能够删除全部的标记

当在查看错误日志时,正常的步骤是,vim打开文件,而后使用 shift+g 再跳转到最后一行,这里有个更简单的操做能够在打开文件时当即跳到最后一行。只要在 vim 和 文件 中间加个 + 便可。

vim + you.log

触类旁通,当你想打开文件当即跳转到指定行时,能够这样

# 打开文件并跳转到 20 行

vim you.log +20

当你使用 / 搜索定位跳转或者使用 :行号 进行精准跳转时,有时咱们想返回到上一次的位置,如何实现?

只要使用 Ctrl+o 便可返回上一次的位置。

gcc命令

对于一个用Linux开发C程序的人来讲,这个命令就很是重要了,它用于把C语言的源程序文件,编译成可执行程序

time命令

该命令用于测算一个命令(即程序)的执行时间。它的使用很是简单,就像平时输入命令同样,不过在命令的前面加入一个time便可,例如:

time ./process  
time ps aux

必知必会

一、经常使用操做

  • 查看当前目录下的全部文件及目录
    • ls/ll
  • 进入目录
    • cd
  • 查看当前目录
    • pwd
  • 结束当前进程
    • ctrl+c/ctrl+z
  • 新建目录
    • mkdir dir1[ dir2 dir3 dir4] 新建四个dir
  • 删除目录
    • rm -rf dir 删除目录下及目录下的全部文件
  • 递归建立目录
    • mkdir -p /dir1/dir2/dir3/dir4 递归建立目录
    • scp -r
  • 清屏
    • clear 或者 ctrl+l
  • 查看IP信息
    • ifconfig
  • (防火墙)打开、关闭、查看状态
    • service iptables start、stop、status
  • (网络)打开、关闭、查看状态
    • service network start、stop、status
  • mysql服务打开、关闭、查看状态
    • service mysqld start、stop、status
  • 配置服务开机启动
    • chkconfig mysqld on
  • mysql shell客户端
    • mysql -uroot -p123456
  • yum 安装
    • yum install -y telnet
    • yum remove telnet
  • 测试机器之间可否通讯
    • ping 192.122...
  • 测试可否与某个应用(好比mysql)通讯
    • telnet 192.123.. 3306
  • 自动补全
    • tab
  • 查看进程
    • ps -ef | grep impala
  • 过滤相关信息
    • grep
    • netstat -nltp | grep 3306 查看端口
    • jps | grep NameNode
    • cat | grep -v "#"
    • ps -ef | grep redis | grep -v grep
  • 查看java进程
    • jps
  • 编辑文本
    • vi/vim/touch
  • 删除文件
    • rm -rf filename
  • 查看文件
    • cat filename
    • more filename
    • tail -f/-F/-300f filename.txt 查看文件后300行
      • -f 是一个小狗,不是很凶,只要删除了当前文件,再去从新建立,不追踪了。
      • -F是一个大狗,很凶,就算删除了,只要从新建立同名文件,继续追踪。
    • head [-number]filename查看文件头十行
  • 移动文件
    • MV
    • mv file1 file2 改名
  • 查找文件
    • find / -name a.xx
  • 复制文件
    • cp file1 /directory/
  • 节点传送文件
    • scp -r /export/servers/hadoop node02:/export/servers
    • scp -r /export/servers/hadoop node02:$PWD (发送到当前同级目录)
    • scp -r /export/servers/hadoop user@node02:/export/servers
  • 查看日期
    • date
    • date +"%Y-%m-%d %H:%M:%S"
    • date -d "-1 day" +"%Y-%m-%d %H:%M:%S"
  • 建立文本
    • while true; do echo 1 >> /root/a.txt ; sleep 1;done

二、用户管理

  • 添加用户
    • useradd username
  • 更改用户密码
    • password username
  • 删除用户
    • userdel username 删除用户(不删除用户数据
    • userdel -r username 删除用户和用户数据

三、压缩包管理

  • gz压缩包
    • tar czf file.tar.gz file 制做file的压缩包
    • tar zxvf file.tar.gz -C /directory 解压缩包
  • zip压缩包
    • zip file.zip file 将file制成名为file.zip
    • unzip file.zip 解压缩

四、查看属性

  • 查看磁盘大小
    • df -h
  • 查看内存大小
    • free -h
  • 查看文件大小
    • du -h
  • 任务管理器
    • top
  • 清理缓存
    • echo 1 > /proc/sys/vm/drop_caches

相关问答

linux 查看当前进程有哪些方式

| http://www.javashuo.com/article/p-apskrkvq-t.html

Linux 使用shell获取当前进程id

UID是用户ID,PID是进程ID,PPID是父进程ID。

UID
UID 用户身份证实(User Identification)的缩写。UID用户在注册后,系统会自动的给你一个UID的数值。意思就是给这名用户编个号。
PID
PID(Process Identification)操做系统里指进程识别号,也就是进程标识符。操做系统里每打开一个程序都会建立一个进程ID,即PID。PID(进程控制符)英文全称为Process Identifier。PID是各进程的代号,每一个进程有惟一的PID编号。它是进程运行时系统分配的,并不表明专门的进程。在运行时PID是不会改变标识符的,可是进程终止后PID标识符就会被系统回收,就可能会被继续分配给新运行的程序。
  只要运行一程序,系统会自动分配一个标识。是暂时惟一:进程停止后,这个号码就会被回收,并可能被分配给另外一个新进程。只要没有成功运行其余程序,这个PID会继续分配给当前要运行的程序。若是成功运行一个程序,而后再运行别的程序时,系统会自动分配另外一个PID。

PPID
表明当前进程的父进程ID;

提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中获得PID。

当我在执行shell脚本时,它会启动一个叫子shell的进程。做为主shell的子进程,子shell将shell脚本中的命令做为批处理运行(所以称为“批处理进程”)。
子shell进程的PID存储在一个特殊的变量‘$$'中, PPID存储子shell父进程的ID(也就是主shell), UID存储了执行这个脚本的当前用户ID.
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $UID"

centOS6与centOS7 的区别

1、系统初始化技术演变——开机启动流程
CentOS 6:采用了INIT技术,整个开机过程是自检BIOS——MBR引导——GRUB加载——加载内核——启动INIT进程——读取INITTAB配置文件,根据配置文件指定的模式按顺序来启动进程服务。INIT技术让启动流程很清晰,依赖SHELL脚本。由于启动进程时是按顺序一个一个启动,因此速度慢,会由于某个服务卡住而影响系统的启动。

CentOS 7:采用了systemd技术。这是替代INIT的新技术,采用了并行方式来启动进程,因此启动速度更快,而且兼容INIT的命令以下降迁移成本。

PS:经过ps命令查看PID为1的进程能够得知当前系统所采用的技术

2、网络设置方式的改变
在CentOS 6中让人熟悉的ipconfig在CentOS 7中被ip命令取代了;图形化网络配置工具nmtui取代了setup

upgrade-centos-6-to-7.jpg
upgrade-centos-6-to-7.jpg

3、主机名与字符集
在CentOS 6中要修改主机名能够经过编辑/etc/sysconfig/network文件,可是在CentOS 7中已经废弃这个方式,而使用了/etc/hostname文件。对于临时修改主机名的方式不变,依然是hostname命令。而且CentOS 7中新增了一个主机名管理工具hostnamectl(该工具对文件名的修改是永久有效)。

而对于字符集的修改,CentOS 7使用了新的配置文件/etc/locale.conf来替代/etc/sysconfig/i18n。若是要临时修改字符集的话方式不变,修改LANG变量,如LANG=zh_CN.UTF-8。新增了字符集管理工具localectl,效果和hostnamectl同样。

4、兼容/etc/rc.local
/etc/rc.local文件中记录了须要开机后自动执行的命令,在CentOS 7中该文件虽然已经被废弃,可是也能兼容使用,只须要给该文件赋予可执行权限:

chmod +x /etc/rc.d/rc.local

5、runlevel运行级别的区别
CentOS 6中的/etc/inittab文件是基于init技术实现的,因此在CentOS 7中天然没法使用,可是该文件依然被保留下来,只不过其中的内容已经被替换为引导内容,让用户知道如今如何切换运行级别,因为这个不经常使用就不继续描写。

6、服务的管理
这是让用户最不爽的修改,增长了systemctl工具,融合了service和chkconfig命令的功能,具体使用方式见图:

systemctl: 融合service和chkconfig的功能于一体

systemctl start crond.service 启动服务
systemctl stop crond.service 中止服务
systemctl restart crond.service 重启服务
systemctl reload crond.service 重载服务
systemctl status crond.service 查看服务运行状态
systemctl list-unit-files 查看全部开机服务
systemctl enable crond.service 开机自启动
systemctl disable crond.service 开机不启动
systemctl is-enabled crond.service 检查是否开机自启动
相关文章
相关标签/搜索