Linux常考的指令

https://www.cnblogs.com/crazylqy/p/5818745.html 这个里面有一些很基础的很详细的说名。

点击打开链接

测试开发常考的指令:
(1)Linux的文件系统目录配置
要遵循FHS规范,规范定义的两级目录规范如下:
        /home  每个账号在该目录下都有一个文件夹,进行数据的管理
        /usr 有点像windows的program files和winNT结合的目录,主要包括系统的主要程序、本机端额外安装的软件、图形接口所需要的文档、额外的函数库、共享目录与文件等
        /bin  /usr/bin  /usr/local/bin 存放执行挡  如可执行的指令等
        /boot 存放linux开机会用到的文件
        /dev 存放linux的任何装置和接口设备文档
        /etc 存放系统设定文档 如账号密码文件、各种服务的起始档等
        /lib  /usr/lib /usr/local/lib 系统使用的函数库放置的目录
        /mnt /media 是软盘和光盘预设挂载点的地方
        /opt 主机额外安装软件所摆放的目录
        /proc 该目录是一个虚拟档案系统,他放置的数据都是在内存中,所         以本身不占用任何的硬盘空间
        /root 系统管理员的家目录
        /sbin  /usr/sbin  /usr/local/sbin 放置一些只有系统管理员才能动用          的执行指令
        /srv 一些服务启动之后,这些服务所需要取用的数据目录
        /tmp 让一般使用者或者正在执行的程序暂时放置档案的地方
        /var  主要针对系统执行过程中,常态性变动档案放置的目录
文档的路径有:绝对路径 (absolute) 与相对路径 (relative)。
绝对路径为:由根目录 (/) 开始写起的文件名或目录名称
相对路径为相对于目前路径的文件名写法。 ./表示相对当前路径,../表示相对于上一级目录的路径,~代表home目录,~account代表当前账号的home目录)


(2)文件系统命令
Linux的文件系统采用异步的方式,对文件的修改不会马上写入磁盘,一般可以人为的使用sync命令进行手动的数据同步到磁盘


(1) linux可以挂载很多文件系统,查看命令
cat /proc/filesystems


(2) 查看目录的使用情况命令
df -h //以G为单位查看
df -m //以M为单位查看


(3) 查看文件或目录大小
du -sh


(4) 目录的切换命令
cd ..
cd ~
cd /home
cd ./home


(5) 打印当前的路径
pwd


(6) 创建目录
mkdir (-m 参数可以预设权限  -p参数可以递归的创建目录)


(7) 删除目录
rmdir(只能删除空目录)
如果连同内容都删除采用  rm  -rf 命令


(8) 文档的查询
ls -al


(9) 文档的复制
cp src des  若复制文件夹,加上-r参数


(10) 文件的删除
rm -rf file


(11) 文档的移动
mv file desdir


(12) 文档重命名
mv desdir desdir2


(13) 取文件名
basename


(14) 取得路径名
dirname


(15) 文档内容的查阅
cat -n :显示文件所有内容,-n表示打印行号 cat file.log | tail -n +100| head -n 200 文件的100-300行 从100行开始,显示200行。


(16) 文件内容的撷取
head  tail
head [-n  number] file  //显示file的前number行
tail [-n number] file //显示ifle的后number行


(17) 文件时间
linux的文档有三个时间mtime(修改时间), atime(访问时间),ctime(状态修改时间)
touch命令可以用于创建新文档或者修改linux文档的时间


(18) linux文档的搜索
whereis、  locate(这两者是直接搜索数据库,速度快) find(搜索硬盘,速度较慢,但数据最齐全) which(用来搜索执行挡$Path设置的目录)
which ls //只能找到制定Path下面的文件
whereis file //找出file的位置
locate file//查找所有目录下的文件
find file//查看当前目录下的所有文件


(19) 同时显示两个文件的差异
diff -c file1 file2
以并列的方式显示两个文件的差异
diff -y file1 file2


(20) 文档链接
软连接:源文件消失,目的文件也消失
硬连接: 其中一个修改,另一个也修改,但删除源文件时,目的文件不删除
In file1 file2 //建立file1的链接,命名为file2
In -s file1 file2 //建立file1的软连接


修改权限:  

ls -l 【修改文件属性之前查看属性】                  

chgrp ks19 Hello        【将Hello这个文件的用户群组修改到ks19群组下】 change group

chown ks19 Hello       【将Hello这个文件的拥有者修改成 ks19 】 change owner

sudo chmod XXX Hello  【XXX代表不同的权限eg:600-只有所有者有读和写的权限】 change mode

根据进程号查看对应的信息,比如端口啥的:  netstat -anop | grep PID   a:all n:

查看端口号: lsof -i:8000  【用于查看某一端口的占用情况,比如查看8000端口使用情况

查看指定的端口号的进程情况 :netstat -tunlp |grep   【如查看8000端口的情况,netstat -tunlp |grep 8000

 -t (tcp) 仅显示tcp相关选项
 -u (udp) 仅显示udp相关选项
 -n numeric 拒绝显示别名,能显示数字的全部转化为数字(eg:ip地址) 或者显示行号
 -l 仅列出在Listen(监听)的服务状态
 -p 显示建立相关链接的程序名 program
 -o 计时器timer


最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。

查看进程号:  ps -ef | grep pid          ps -ef | grep mmp-front //mmp-front是进程关键字

查找制定进程的个数:ps -ef | grep mmp-front -c  或者   ps -ef | grep -c mmp-front

查找所有正在运行的进程: ps aux | less

grep 显示出所有的java进程,去处掉当前的grep进程: ps -ef|grep java|grep -v

杀死进程 :kill -9 324 ; kill all

设定时间戳: touch -t 201211142234.50 log.log


Linux Options

-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。
列出所有端口 (包括监听和未监听的)
netstat -a     #列出所有端口
netstat -at    #列出所有tcp端口
netstat -au    #列出所有udp端口  
                           
列出所有处于监听状态的 Sockets
netstat -l        #只显示监听端口
netstat -lt       #只列出所有监听 tcp 端口
netstat -lu       #只列出所有监听 udp 端口
netstat -lx       #只列出所有监听 UNIX 端口

显示每个协议的统计信息
netstat -s   显示所有端口的统计信息
netstat -st   显示TCP端口的统计信息
netstat -su   显示UDP端口的统计信息

在netstat输出中显示 PID 和进程名称
netstat -pt

linux查看日志文件内容命令tail、cat、tac、head、echo

linux查看日志文件内容命令tail、cat、tac、head、echo

tail -f test.log
你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,

---------------------------
linux 如何显示一个文件的某几行(中间几行)

从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000

显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000

*注意两种方法的顺序
分解:
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行

用sed命令
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。

例:cat mylog.log | tail -n 1000 #输出mylog.log 文件最后一千行

---------------------------
cat主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename 
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3

把test.txt文件扔进垃圾箱,赋空值test.txt
cat /dev/null > /etc/test.txt 
注意:>意思是创建,>>是追加。千万不要弄混了。
------------------------------------------
tac (反向列示)
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,
而 tac 则是由最后一行到第一行反向在萤幕上显示出来!

------------------------------------------
在Linux中echo命令用来在标准输出上显示一段字符,比如:
echo "the echo command test!"

这个就会输出“the echo command test!”这一行文字!

echo "the echo command test!">a.sh
这个就会在a.sh文件中输出“the echo command test!”这一行文字! 
该命令的一般格式为: echo [ -n ] 字符串其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。
用echo命令输出加引号的字符串时,将字符串原样输出;
用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

流风,飘然的风,本人博客网站: http://www.ssqhm.com
QQ群: python技术交流群:453879716,人工智能深度学习群:251088643, 有兴趣的可以加入 
微信公众帐号:双色球预测合买(ssqyuce), 心禅道(xinchandao),囤币一族(tunbitt)


linux几种常见的文件内容查找和替换命令

作为一个以前没怎么接触过linux的小白,开始使用linux,各种不习惯,这周遇到一个文件内容测查找和替换的需求。学习了以下几种实现方式:

1、vi命令下的查找和替换

1.1 vi下的查找

/pattern<Enter> :向下查找pattern匹配字符串

?pattern<Enter>:向上查找pattern匹配字符串
使用了查找命令之后,使用如下两个键快速查找:
n:按照同一方向继续查找
N:按照反方向查找
pattern是需要匹配的字符串,例如:
/name<Enter>      #查找name
/name<Enter>    #查找name单词(注意前后的空格)
除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。
/^name<Enter>    #查找以name开始的行
/name$<Enter>    #查找以name结束的行
//^name<Enter>    #查找^name字符串

1.2 vi下的替换

:s/name/title/         #替换当前行第一个 name 为 title
:s/name/title/g     #替换当前行所有 name 为 title
:n,$s/name/title/     #替换第 n 行开始到最后一行中每一行的第一个 name 为 title
:n,$s/name/title/g     #替换第 n 行开始到最后一行中每一行所有 name 为 title
#(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/name/title/        #(等同于 :g/name/s//title/) 替换每一行的第一个 name 为 title
:%s/name/title/g    #(等同于 :g/name/s//title/g) 替换每一行中所有 name 为 title
可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#name/#title/#         替换当前行第一个 name/ 为 title/
:%s+/oradata/apras/+/user01/apras1+ (
使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

2.sed和grep配合

命令:sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`

作用:将当前目录(包括子目录)中所有txt文件中的yyyy字符串替换为xxxx字符串。其中,

-i 表示操作的是文件,``括起来的grep命令,表示将grep命令的的结果作为操作文件。

s/yyyy/xxxx/表示查找yyyy并替换为xxxx,后面跟g表示一行中有多个yyyy的时候,都替换,而不是仅替换第一个

另外,如果不需要查找子目录,仅需要在当前目录替换,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt

3.find命令查找和替换

命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'

#查找替换当前目录下包含字符串并进行替换

find -name '*.txt' | xargs perl -pi -e 's|智慧乡村|北部山区|g'

#递归查找替换

find . -type f -name '*.html' | xargs perl -pi -e 's|智慧乡村|北部山区|g'


管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入

ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15

      “ps aux”是linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep python”的输入。 

    “grep python”的输出结果是,所有含有关键字“python”的进程,这是python程序

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

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

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

      “kill -15”会正常退出指定进程,-9强行杀掉



碰到需要杀掉某一类进程的时候,如何批量杀掉这些进程,使用awk命令是很好的选择。

1
ps  -ef| grep  aaa| grep  - v  grep | awk   '{print "kill -9 " $2}'  |sh

ps -ef|grep aaa|grep -v grep   

这是大家很熟悉的命令,这里就不再多说,就是从当前系统运行的进程的进程名中包含aaa关键字的进程。

 后面部分就是awk命令了,一般awk命令的格式为:awk ' pattern {action} '

    print是打印,kill -9 是强制停止进程的命令, $2就是前面有ps -ef命令得出的结果的第二列上显示的内容。

#ps -ef|grep boco|grep -v grep  //列出了当前主机中运行的进程中包含boco关键字的进程
    root  9884  9883  0 17:10:01 ?         0:00 sendmail -oem -oi -froot boco
    root  9883  9880  0 17:10:01 ?         0:00 /usr/bin/mail boco
    boco 11112     1  0  Dec 24  ?         0:00 ./boco_appmaster -d /home/boco/agent
    boco 11126 11125 61  Dec 24  ?        52:59 ./boco_hostagent -i socket -l
    boco 11125 11112 37  Dec 24  ?        43:25 ./boco_appmaster -d /home/boco/agent
    boco  9811 11113  0 17:09:31 ?         0:00 sleep 60
    boco 11113     1  0  Dec 24  ?         0:23 /bin/sh ./boco_monitor.sh
#ps -ef|grep boco|grep -v grep|awk '{print "kill -9 "$2}'  //则列出了要kill掉这些进程的命令,并将之打印在了屏幕上
kill -9 9884
kill -9 9883
kill -9 11112
kill -9 11126
kill -9 11125
kill -9 9811
kill -9 11113

# ps -aux|grep "service_2.php"|awk '{print "kill -9 "$2}'|sh  //后面加上 |sh 后,则执行这些命令,进而杀掉了这些进程。


linux 下 cp和scp有什么区别:

cp主机文件之间的copy,scp是ssl远程登录Linux ,进行文件的copy?


[Linux]使用aw

猜你喜欢

转载自blog.csdn.net/qq_33608638/article/details/79931068
今日推荐