Linux下
1.基本命令
1)显示当前目录:pwd
[user4@localhost ~]$ pwd
/home/user4
2)cd
. 代表当前目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表『目前用户身份』所在的家目录
3)列出目录内容:ls
ls
-a:–all 列出目录下的所有文件,包括以 . 开头的隐藏文件
-l :除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。 ll 网络编程中因为没有环境变量的支 持 ssh 命令是用不了
-r :–reverse 依相反次序排列
-t :以文件修改时间排序
ls :打印所有目录
ls -a:打印所有目录 包括隐藏目录
ls -l : 查看详细信息 (ll)
ls -la :查看详细信息 包括隐藏文件的详细信息
ls -alt:按照更新时间降序排序
ls 目录:查看指定目录文件夹
4 )查看文本文件:cat
-b : 对非空输出行编号 空行会略过
-n : 对输出的所有行编号,由1开始对所有输出的行数编号
5 阅读文件的开头:head
默认展示10行数据
-c<字节> 显示字节数 [user4@localhost ~]$ head -c 4 file1
-n : 显示的行数 head -n 3 server.xml
6 阅读文件结尾循环查看日志:tail
默认读取文件尾部的10行数据
-f 循环读取
-c<数目> 显示的字节数
-n<行数> 显示行数
#从第二行开始展示数据
[user4@localhost ~]$ tail -n +2 file1
7.文本阅读工具:less
-m 显示文件的百分比 显示阅读到%多少了
-N 显示每行的行号 显示每行的行号
#向上查询关键词
?server #按n继续找 按N反向找
#向下查询关键词
/server
8.查找文件内容:grep
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数,如果同一行有相同的,则视为同一次数
-i :忽略大小写的不同,大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即 显示出没有 '搜寻字符串' 内容的那一行!
-E : 按照正则表达式匹配查找
#正则表达式
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的行首。
$: 匹配正则表达式的行尾。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
. :表示任意单个字符,如 a..b,a12b、aabb都可以。
* :表示有0个或多个 某个字符,如 ab*,a必须有,但b可以有0到多个;a*,a可以有0到多个,也就是所有。
字符匹配:
[[:alnum:]] 字母和数字
[[:alpha:]] 代表任何英文大小写字符,亦即A-Z, a-z
[[:lower:]] 小写字母
[[:upper:]] 大写字母
[[:blank:]] 空白字符(空格和制表符)
[[:space:]]水平和垂直的空白字符(比[:blank:]包含的范围广)
[[:cntrl:]] 不可打印的控制字符(退格、删除、警铃...)
[[:digit:]] 十进制数字
[[:xdigit:]]十六进制数字
[[:graph:]] 可打印的非空白字符
[[:print:]] 可打印字符
[[:punct:]] 标点符号
9.终止指定进程:kill
-15:终止进程,发送指定的信号到相应进程。不指定型号将发送终止指定进程。
-9: 强制终止进程。
#查看进程
ps -ef | grep xxx
10.查看进程
[root@localhost ~]# ps -ef --> 查看系统中所有的进程,使用Linux标准命令格式(带父ID)
[root@localhost ~]# ps -aux --> 查看系统中所有的进程,使用BS操作系统格式(带CPU和内存信息)
-aux
解释一下这个命令的输出:
USER:该进程是由哪个用户产生的。
PID:进程的 ID。
%CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ:该进程占用虚拟内存的大小,单位为 KB。
RSS:该进程占用实际物理内存的大小,单位为 KB。
TTY:该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
STAT:进程状态。常见的状态有以下几种:
D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
R:该进程正在运行。
S:该进程处于睡眠状态,可被唤醒。
T:停止状态,可能是在后台暂停或进程处于除错状态。
W:内存交互状态(从 2.6 内核开始无效)。
X:死掉的进程(应该不会出现)。
Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
<:高优先级(以下状态在 BSD 格式中出现)。
N:低优先级。
L:被锁入内存。
s:包含子进程。
l:多线程(小写 L)。
+:位于后台。
START:该进程的启动时间。
TIME:该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND:产生此进程的命令名。
-ef
其中各列的内容意思如下:
UID :用户ID、但输出的是用户名
PID :进程的ID
PPID :父进程ID
C :进程占用CPU的百分比
STIME :进程启动的时间
TTY :该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
TIME:进程已经占用的CPU的时间
CMD :命令的名称和参数
11.文本分析工具:AWK
[user4@localhost ~]$ awk '{print $1,$4}' log1
#-F指定分割字符
awk -F
#使用 空格 和 , 进行数据获取
[user4@localhost ~]$ awk -F '[ ,]' '{print $1}' log1 获取空格之前的数据
# $1 第一列 $NF 最后一列
{print $1,$NF}
12.文本编辑工具:SED
参数说明:
-e:在本行前面插入字符串
#在file1的第四行添加一行数据
[user4@localhost ~]$ sed -e 4a\hello,Sed file1
hello,Sed
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
#仅列出 passwd 文件内的第 5-7 行
[user4@localhost ~]$ nl passwd | sed -n '5,7p'
-V或--version 显示版本信息。
动作说明:
a :新增,后一行插入字符串
#在第二行后加上『赵文明』字样!
[user4@localhost ~]$ nl file1 | sed '2a 赵文明'
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 !
#将第2-5行的内容取代成为『赵文明』
[user4@localhost ~]$ nl file1 | sed '2,5c 赵文明'
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
#删除2-5行
[user4@localhost ~]$ nl passwd | sed '2,5d'
#删除2-最后一行
[user4@localhost ~]$ nl passwd | sed '3,$d'
i :插入, 前一行插入字符串;
#那如果是要在第二行前
[user4@localhost ~]$ nl file1 | sed '2i 赵文明'
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
#搜索 /etc/passwd有 user 关键字的行
[user4@localhost ~]$ nl passwd | sed -n '/user/p'
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
13.文件查询命令 find 命令
find 文件目录 [选项]
-name 文件名 : 按照文件名查找文件。
-perm 权限 : 按照文件权限来查找文件。
-user UID或用户名 :按照文件属主来查找文件。
-group GID或组名 :按照文件所属的组来查找文件。
-type 类型 :查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。 ****
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。 ****
f - 普通文件。 ****
-newer 文件名:查找更新时间比文件新的文件。
-newer file1 ! -newer file2 查找更改时间比文件file1 新但没有比文件file2新的文件。
-mtime -n +n 按照文件的更改时间来查找文件
- n 表示文件更改时间距现在n天以内,
+n 表示文件更改时间距现在n天以前。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
#糊查询
[user4@localhost ~]$ find /home/user4 -name 'f*'
#按文件所属的UID或者用户名查询
[user4@localhost ~]$ find . -user 1003
#按文件的类型查询
[user4@localhost ~]$ find . -type f
./.bash_logout
14.查找特定程序:whereis
whereis [参数] 文件名 #whereis命令只能用于程序名的搜索,而且只搜索二进制文件
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
15.whoami
#查看当前登录用户
whoami
#查看当前=谁登陆了系统
who
16.系统版本信息查看:uname
uname -a #系统版本所有信息
uname -r #系统内核信息
17.man帮助
man -----
18.建立目录:mkdir
-m:[user4@localhost ~]$ mkdir -m 700 d2 #设定权限=chown
-p:连续构建目录
19.建立一个空文件:touch
[user4@localhost ~]$ touch file5
20.移动和重命名:mv
mv [-参数] 源目录或文件 目标文件或目录 #mv 的 -i 参数起到提示作用 -b 参数备份文件
-b :若需覆盖文件,则覆盖前先行备份。
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
#文件重命名
[user4@localhost ~]$ mv a d3
#将新建的 file5 这个文件移动到d3 目录
[user4@localhost ~]$ mv file5 d3
21.复制:cp
cp [-参数] 源目录或文件 目标文件或目录
-a: –archive 递归复制文件目录,并且复制的文件的属性也一致
-i: –interactive 覆盖前询问
-R:递归处理,将指定目录下的文件及子目录一并处理
#file1 file4为目录
#如果file4存在就是拷贝,如果不存在就是把file2重命名为file4
[user4@localhost ~]$ cp -R file2 file4
22.删除:rm
rm -rf ~
23.改变文档的所有权:chown(change own)
-R 处理指定目录以及其子目录下的所有文件
# rwx = 421 x|xxx|xxx|xxx 自己 组 其他用户
[root@localhost ~]# chown user4:user4 group
-rw-r--r--. 1 user4 user4 637 5月 31 01:35 group
##################
[root@localhost ~]# chown user4: file1
[root@localhost ~]# chown :user4 file2
-rw-r--r--. 1 user4 user4 1304 5月 31 01:37 file1
-rw-r--r--. 1 root user4 1304 5月 31 01:37 file2
24.改变文档权限:chmod
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
[root@localhost ~]# chmod u=rwx,g=rwx,o=rwx file1
-rwxrwxrwx. 1 user4 group1 1304 5月 31 01:37 file1
# 给文件所有用户组加可执行权
[root@localhost ~]# chmod a+x file2
-rwxr-xr-x. 1 root user4 1304 5月 31 01:37 file2
#设置目录及其子目录 拥有者(读、写、执行权),组拥有(读、写、执行权),其他没有权限
[root@localhost ~]# chmod -R 770 etc/
25.输入输出重定向 和 管道
标准重定向符号
> 输出重定向到一个文件或设备 覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序
#
[user4@localhost ~]$ cat file100000 >> log1 2> log2
[user4@localhost ~]$ cat log2
cat: file100000: 没有那个文件或目录
标准错误重定向符号
2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出
26. 管道符号:|
利用Linux所提供的管道符 “|” 将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。
1)管道命令只处理前一个命令正确输出,不处理错误输出。
2)管道命令右边命令,必须能够接收标准输入流命令才行。
27.RPM
#安装rzsz
yum -y install lrasz
#安装wget
yum -y istall wget
[root@localhost yum]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
#移动并重命名
[root@localhost yum.repos.d]# mv CentOS-Base.repo /tmp && mv Centos-7.repo CentOS-CR.repo
#更新命令
yum clean all #清空国外源的
yum makecache #缓存阿里云的
yum update -y #从阿里云更新
#安装软件
yum install -y openssh-server vim gcc gcc-c++ glibc-headers bzip2-devel lzo-devel curl wget openssh-clients zlib-devel autoconf automake cmake libtool openssl-devel fuse-devel snappy-devel telnet unzip zip net-tools.x86_64 firewalld systemd ntp
JDK
#安装jdk
[root@localhost upload]# rpm -ivh jdk-8u144-linux-x64.rpm
#查看java版本
[root@localhost upload]# java -version
#配置环境变量
[root@localhost upload]# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#刷新环境变量
[root@localhost ~]# source /etc/profile
安装tomcat
#tomcat
#安装
[root@localhost bin]# tar -zxvf apache-tomcat-8.0.53.tar.gz -C /usr/local
#启动
cd /usr/local/apache-tomcat-8.0.53/bin
./start.sh
28.tar解压
-c 建立新的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
tar -zxvf 解压
选项参数:
-C 切换到指定目录
-f 指定压缩文件
--help 显示帮助信息
#压缩成压缩包
[root@localhost ~]# tar -cvf etc.tar etc
#解压 -C制定解压目录
[hadoop@nn1 ~]$ tar -zxvf etc.tar -C /tmp/
解压各种压缩文件
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 x 解压
9、*.zip 用 unzip 解压
29.zip
#zip压缩
1.参数:-r ,将指定的目录下的所有子目录以及文件一起处理
[root@localhost ~]# zip -r etc.zip etc >> log
2.参数:-q,安静模式,在压缩的时候不显示指令的执行过程
[root@localhost ~]# zip -r -q etc.zip etc
#unzip解压
参数:-d,解压到制定的目录,该目录可以是不存在的
[root@localhost ~]# unzip -q etc.zip -d /tmp/
30.实时监控:top
top [参数]
31.free
#可以查看系统内存和 swap 交换分区的使用情况
-b:以字节为单位显示;
-k:以 KB 为单位显示,默认显示;
-m:以 MB 为单位显示;
-g:以 GB 为单位显示;
2.硬盘管理
1.df 命令
#用于显示 Linux系统中各文件系统的硬盘使用情况,
-a:显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
-k:以 KB 为单位显示容量,默认以 KB 为单位;
-m: 以 MB 为单位显示容量
-T : 显示该分区的文件系统名称;
-i : 不用硬盘容量显示,而是以含有 inode 的数量来显示。
df -h
2.du
是统计目录或文件所占磁盘空间大小的命令。
选项:
-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量
3.mount 命令
挂载
-t 系统类型:指定欲挂载的文件系统类型。Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。
-L 卷标名:除了使用设备文件名(例如 /dev/hdc6)之外,还可以利用文件系统的卷标名称进行挂载。
-n:在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
-o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步/异步等,如果不指定,则使用默认值(defaults)。
#查看硬盘
[root@localhost ~]# fdisk -l
#格式化硬盘
[root@localhost ~]# fdisk /dev/sdb
#设置分区
[root@localhost ~]# mkfs.ext4 /dev/sdb
#挂载点
[root@localhost ~]# mkdir /data
#挂载
[root@localhost ~]# mount /dev/sdb /data
#配置自动挂载
/dev/sdb /data ext4 defaults 0 0
3.网络
netstat [选项]
-a:列出所有网络状态,包括 Socket 程序;
-c秒数:指定每隔几秒刷新一次网络状态;
-n:使用 IP 地址和端口号显示,不使用域名与服务名;
-p:显示 PID 和程序名;
-t:显示使用 TCP 协议端口的连接状况;
-u:显示使用 UDP 协议端口的连接状况;
-I:仅显示监听状态的连接;
-r:显示路由表;