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
设定时间戳: 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
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,各种不习惯,这周遇到一个文件内容测查找和替换的需求。学习了以下几种实现方式:
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?