1.硬链接与软连接的区别
从原理上讲,硬链接和源文件的inode节点号相同,两者互为硬链接,软连接和源文件的inode 节点号不同,所以指向的block也不同,软连接block中存放了源文件的路径名。实际上,硬链接和软连接文件是同一份文件,而软连接是独立的文件,类似与快捷方式,存储着源文件的位置信息便于指向。使用的限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接,可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接。
2.kill 用法,杀掉某个进程杀不掉的原因(进入内核态,忽略kill信号)
这种状况通常很少遇到,一般教科书之说kill -9能杀死全部进程,但是实际上是不可以的,就很矛盾。据我了解一般有两种情况是不能kill杀掉的:
一是进程已经成为僵死进程,当他的父进程将它收回或者是它的父进程kill掉也就是ps看不到了
二是进程处于内核状态,linux进程运行时分为内核和用户两种状态,当进程处于内核状态就会屏蔽所有信号,包括sigkill,所有这个时候kill -9也没有用了
3.Linux 用过的命令
tar -zxvf
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -cf all.tar *.jpg
#这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif
#这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -uf all.tar logo.gif
#这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar
#这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -xf all.tar
#这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar -cvf jpg.tar *.jpg
#将目录里所有jpg文件打包成jpg.tar
tar -czf jpg.tar.gz *.jpg
#将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg
#将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg
#将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg
#rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg
#zip格式的压缩,需要先下载zip for linux
解压
tar -xvf file.tar
#解压 tar包
tar -xzvf file.tar.gz
#解压tar.gz
tar -xjvf file.tar.bz2
#解压 tar.bz2
tar -xZvf file.tar.Z
#解压tar.Z
unrar e file.rar
#解压rar
unzip file.zip
#解压zip
总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
解压tar.xz结尾的文件
$xz -d ***.tar.xz
$tar -xvf ***.tar
可以看到这个压缩包也是打包后再压缩,外面是xz压缩方式,里层是tar打包方式。
补充:目前可以直接使用 tar xvJf ***.tar.xz来解压
查看日志文件中带有指定关键词的日志信息
tail -f 日志文件名 | grep 关键字 | grep 关键字
查看日志文件最后1000行
tail -f -n 1000 日志文件 (实时打印最新的日志信息)
tail -1000n 日志文件(实时打印最新的日志信息)
tail -1000 日志文件(打印出日志文件的最后1000条信息)
tail -n +1000 日志文件(从第1000行开始显示日志信息)
查看日志文件的前1000行
head -n 1000 日志文件
查看日志文件的中间多少行
cat 日志文件 | head -n 3000 | tail -n + 1001
grep查看文件中是否包含有指定的字段并打印出来
grep 8080 文件 (查看文件中中含有8080字段的行)
grep -n 8080 文件(确定8080字段在文件中的行数)
grep -n -i "ggpush" 文件 (确定ggpush在文件中的行数并且忽略大小写)
grep 'ggpush' *.cnf (匹配当前目录下所有后缀为cnf文件含有过滤字段的内容)
过滤掉指定的日志信息
grep -v '关键字'
du -sh
4.系统管理命令
cat /proc/meminfo 查看内存使用
netstat -anp 网络使用情况
netstat -nlp
netstat命令各个参数说明如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询(可以加速操作)
即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况
netstat -nlp |grep LISTEN
//查看当前所有监听端口
netstat -nlp |grep 80
//查看所有80端口使用情况
netstat -an | grep 3306
//查看所有3306端口使用情况
执行命令:ps -ef|grep tomcat|grep /opt/upay3/application/dispatcherTomcat/bin
输出的进程信息会显示2个:包括grep本身的进程+你查询的进程
执行命令:ps -ef|grep tomcat|grep /opt/upay3/application/dispatcherTomcat/bin|grep -v grep
输出的只有你查询的进程:
linux下通过进程名查看其占用端口:
1、先查看进程pid
ps -ef | grep 进程名
2、通过pid查看占用端口
netstat -nap | grep 进程pid
linux通过端口查看进程:
netstat -nap | grep 端口号
5.管道的使用 |
ps -ef|grep python
6.grep(过滤)的使用,在文件中查找,当前目录递归查找
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file
结果如下所示:
$ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件 testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行 testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行 testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi
输出结果如下:
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi” #下包含“update”的文件 /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test *test*
结果如下所示:
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行 testfile1:helLinux! testfile1:Linis a free Unix-type operating system. testfile1:Lin testfile_1:HELLO LINUX! testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. testfile_1:THIS IS A LINUX TESTFILE! testfile_2:HELLO LINUX! testfile_2:Linux is a free unix-type opterating system.
7.shell脚本 .sh
8.find命令
在home目录下查找以.txt结尾的文件名
find /home -name "*.txt"
9.awk使用
awk是一种报表生成器,,就是对文件进行格式化处理的,这里的格式化不是对文件系统格式化而是对文件内容进行各种排版进而格式化显示。