1、vi的编辑操作
在一般模式下:
yy:复制
p:粘贴
dd:删除
u:撤销
Ctrl+r:重做
2、vi查找和替换
在一般模式下:使用/查找关键字
按n键往下找
按大写字母N往上找
:n1,n2s/word1/word2/g 将n1到n2行之间的所有word1替换为word2
:1,$s/word1/word2/g 将第一行到最后一行所有word1替换为word2
3、 查找某个文件夹下的以.txt结尾的文件:
find 文件夹 -name "*.txt"
4、列出系统内进程信息,并grep出自己感兴趣的进程
ps -ef|grep java
5、了解进程的运行时信息和统计信息
每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口,我们可以进到这个文件里面,了解进程的运行时信息和统计信息。
proc/pid/environ:包含了进程的可用环境变量的列表
/proc/pid/fd/:这个目录包含了进程打开的每一个文件的链接。从这里可以查看进程打开的文件描述符信息,包括标准输入、输出、错误流,进程打开的socket连接文件描述符也能看到。
/proc/pid/stat:包含了进程的所有状态信息,进程号、父进程号、 线程组号、 该任务在用户态运行的时间 、 该任务在用内核态运行的时间、 虚拟地址空间的代码段、 阻塞信号的位图等等信息应有尽有。
6、目录
当前目录:./
上层目录:../
主目录: ~/
切换目录: cd
7、怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程: ps
执行退出: exit
查看当前路径: pwd
8、ls 命令执行什么功能? 可以带哪些参数,有什么区别?
ls:列出指定目录中的目录,以及文件
ls -a:所有文件
ls -l:详细信息,包括大小字节数,可读可写可执行的权限等
9、创建
创建目录: mkdir
创建文件:touch 或 vi
复制文件: cp
cp dir1/a.doc dir2:表示将dir1下的a.doc文件复制到dir2目录下
cp -r dir1 dir2:表示将dir1及其dir1下所包含的文件复制到dir2下
cp -r dir1/. dir2:表示将dir1下的文件复制到dir2,不包括dir1目录
说明:cp参数 -i:询问,如果目标文件已经存在,则会询问是否覆盖;
10、文件权限修改:
chmod
chmod u+x file:给 file 的属主增加执行权限
chmod 751 file:给 file 的属主分配读、写、执行(7)的权限;给 file 的所在组分配读、执行(5)的权限;给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file:给 file 的属主分配读、写、执行(7)的权限;给 file 的所在组分配读、执行(5)的权限;给其他用户分配执行(1)的权限
chmod =r file 为所有用户分配读权限
chmod 444 file 为所有用户分配读权限
chmod a-wx,a+r file 为所有用户分配读权限
$ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属主分配读的权限
11、查看文件内容有哪些命令可以使用?
vi 文件名 :编辑方式查看,可修改
cat 文件名 :显示全部文件内容
more 文件名 :分页显示文件内容
less 文件名 :与 more 相似,更好的是可以往前翻页
tail 文件名 :仅查看尾部,还可以指定行数
head 文件名 :仅查看头部,还可以指定行数
12、移动文件、改名用哪个命令?
mv
13、复制
复制文件:cp
连同文件夹和文件夹下的文件一块复制:cp -r
14、删除
删除文件:rm
连目录及目录下文件一块删除:rm -r
删除空文件夹:rmdir
15、Linux 下命令有哪几种可使用的通配符?
“?”可替代单个字符。
“*”可替代任意多个字符。
“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]
16、用什么命令对一个文件的内容进行统计?
统计字节数:wc -c
统计行数:wc -l
统计字数:wc -w
17、grep 命令
tail 文件 | grep -B 3 "单词" --color 找含有 单词 字符的哪一行的前3行(before)
tail 文件 | grep -A 3 "单词" --color 找含有 单词 字符的哪一行的后3行(after)
tail 文件 | grep -C 3 "单词" --color 找含有 单词 字符的哪一行的前后3行(context)
18、Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效)
X 死掉的进程
19、怎么使一个命令在后台运行?
使用 & 在命令结尾
20、哪个命令专门用来查看后台任务?
job -l
21、后台任务调到前台执行?停下的前台任务在后台执行?
fg:把后台任务调到前台执行
bg:把停下的前台任务在后台执行起来
22、终止进程用什么命令? 带什么参数?
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
-s:指定发送的信号。
kill [-s <信息名称或编号>] [程序]
如:kill-9 pid
23、怎么查看系统支持的所有信号?
kill -l
24、搜索文件用什么命令? 格式是怎么样的?
find / -name "string*"搜索根目录(含子目录)中,所有文件名以string开头的文件。
locate /etc/sh:搜索etc目录下所有以sh开头的文件。
whereis -b bash:显示bash 命令的二进制程序
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
25、使用什么命令查看磁盘使用空间?
df -h:查看磁盘
du -h 文件夹名称:查看文件夹或文件的大小
26、使用什么命令查看网络是否连通?
netstat
27、使用什么命令查看 ip 地址及接口信息?
ifconfig
28、查看各类环境变量用什么命令?
env:查看所有
env $HOME:查看home:
29、du 和 df 的定义,以及区别
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
30、打印出当前的目录栈?
dirs
31、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
disown -r
32、怎样查看一个 linux 命令的概要与用法?
whatis
33、查看内存使用情况
free -h
34、列出本机所有java进程的pid
jps [ options ] [ hostid ]
选项
-q 仅输出VM标识符,不包括class name,jar name,arguments in main method
-m 输出main method的参数
-l 输出完全的包名,应用主类名,jar的完全路径名
-v 输出jvm参数
35、上传下载文件
sz:下载文件
rz -ey、rz -e:上传文件
36、查看尾部100行日志
tail -fn 100 logs/catalina.out
37、查看jvm gc情况
jstat -gc pid
38、查看所有的进程和端口
netstat –apn
最后一知栏是PID/Program name
39、说明正在运行的内核版本
cat /proc/version
40、安装python的redis模块
wget --no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz
tar -zvxf redis-2.8.0.tar.gz
mv redis-2.8.0 python-redis-2.8.0
cd python-redis-2.8.0
python setup.py install
41、查看python都安装了那些模块
pip list
42、检查端口通不通
telnet ip port
43、linux查看redis安装目录
ps -ef|grep redis
得到了进程号 xxxx
ll /proc/xxxx/cwd
44、如何查阅命令的帮助信息
任意命令后接 --help参数就可以看到该命令的简要提示
45、grep常见命令参数
-n 打印行号
grep -n ".*" h.txt 所有打印行号
grep -n "root" h.txt 匹配的内容显示行号
-v 不包括
-E 表示过滤 多个参数
grep -Ev "sshd|network|crond|sysstat|"
-o:仅打印你需要的东西,默认打印正行
grep -o "hello" h.txt
-i:忽略大小写
grep -i "hello" h.txt
-c: 用于统计文中出现的次数
--color=auto 过滤字段添加颜色
利用正则打印特定字符
\b:作为边界符,边界只包含特定字符的行
grep "\boldboy\b" /etc/passwd -->只过滤包含oldboy的行
46、awk命令
awk 用法:awk ' pattern {action} '
变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
例:
awk '{print $2}' file : 一行一行的读取指定的文件, 默认以空格作为分隔符,打印第二个字段
awk -F "|" '{print $1}' file :以“|”作为分隔符,打印第一个字段
awk 'BEGIN{sum=0}{sum+=2}END{print sum}' file :BEGIN 表示在处理文件第一行之前进行的操作。END 表示在处理文件最后一行之后进行的操作
awk '{print NR,NF,$1,$NF}' file :显示文件file的当前记录号(行号)、域数(每一行的总个数)和每一行的第一个和最后一个域(切割后的内容)。
47、对文件内容排序后删除重复行
sort -u 文件
等价于
sort 文件 | uniq :sort对文件进行排序,uniq删除相邻的重复行
48、显示所有行号,在VI的命令模式下输入
:set nu
49、vi不保存退出
按“Esc“键,退出”insert“模式,然后输入冒号(:),紧接着输入下面的命令:q!
50、vi跳转到某一行功能
:$ 跳转到最后一行
:1 跳转到第一行
:n 跳转到第n行
51、Linux中>>和>的区别
>会覆盖目标的原有内容。当文件存在时会先删除原文件,再重新创建文件,然后把内容写入该文件;否则直接创建文件。
>>会在目标原有内容后追加内容。当文件存在时直接在文件末尾进行内容追加,不会删除原文件;否则直接创建文件。
52、在Linux系统中0 1 2是一个文件描述符
名称 | 代码 | 操作符 | Java中表示 |
---|---|---|---|
标准输入(stdin) | 0 | < 或 << | System.in |
标准输出(stdout) | 1 | >, >>, 1> 或 1>> | System.out |
标准错误输出(stderr) | 2 | 2> 或 2>> | System.err |
53、关于2>&1的含义
含义:将标准错误输出重定向到标准输出
符号>&是一个整体,不可分开,分开后就不是上述含义了。
比如有些人可能会这么想:2是标准错误输入,1是标准输出,>是重定向符号,那么"将标准错误输出重定向到标准输出"是不是就应该写成"2>1"就行了?是这样吗?
如果是尝试过,你就知道2>1的写法其实是将标准错误输出重定向到名为"1"的文件里去了
写成2&>1也是不可以的
54、Linux crontab是用来定期执行程序的命令
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI
-r : 删除目前的时程表
-l : 列出目前的时程表
设定时间的语法是否正确可以通过以下网站验证
https://tool.lu/crontab/
55、为防止端口占用,手动放开端口
iptables -A INPUT -ptcp --dport 端口号 -j ACCEPT
56、软链接
linux下的软链接类似于windows下的快捷方式
ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录
实例:ln -s /home/gamestat /gamestat
如上面的示例,当我们执行命令 cd /gamestat/的时候 实际上是进入了 /home/gamestat/
值得注意的是执行命令的时候,应该是a目录已经建立,目录b没有建立。我最开始操作的是也把b目录给建立了,结果就不对了
57、linux硬链接和软链接的区别
硬链接(hard link):
A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
软链接(soft link):
A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
58、压缩和解压
压缩:
tar -czvf sysconfig.tar.gz /etc/sysconfig/
命令解释:对目录/etc/sysconfig/进行压缩,压缩成文件sysconfig.tar.gz,并且将压缩成的文件放在当前文件夹内。
-c --create创建新的文档
-z 参数来调用gzip程序
-v --verbose 显示详细的tar处理的文件信息
-f --file 要操作的文件名
解压:
tar -xzvf sysconfig.tar.gz
59、更改linux Shell脚本编码格式
用vi打开文件:
:set ff=unix
查看文件编码格式
:set ff
60、查看tomcat的jdk版本
进入tomcat的bin目录下:
version.sh