线上 Linux 下笔记

分享 123456789987654321 ⋅ 于 2020-07-05 11:06:38 ⋅ 最后回复由 青牛 2020-07-18 18:42:57 ⋅ 2100 阅读

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:显示路由表;
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-123456789987654321,http://hainiubl.com/topics/75180
回复数量: 4
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-07-05 15:20:16

    不错很详细,老师讲的你都写上了

  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-07-05 15:20:50

    你这打赏码真的秀啊,太皮了

  • 123456789987654321 奶牛(野牛的大哥)
    2020-07-18 16:20:48

    @青牛 这可是我精挑细选的

  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-07-18 18:42:57

    @123456789987654321 可以可以

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter