Linux从入门到精通

383 阅读12分钟

主要内容介绍

Linux常用命令介绍

操作文件相关

1.查找当前目录下文件中包含某个字符串 比如"welcome"字符串,*表示当前目录下的所有文件也可以是文件名

grep -rn "welcome" * --col;
grep -rn "hello" /home/admin/

2.在某个具体的目录下查找包含某个关键字的文件

grep -rn /usr/local -e "2003"

3.查找目录/home/admin下的所有Snow开头的文件

find /home/admin -name "Snow*"

4.查找所有大小超过100M的文件

find /home/admin -size +100M

5.在某个目录下面查找名字为"tomcat"的文件

find /home/admin -type f -name "tomcat"

6.解压tar.gz的文件到/usr/local目录下

tar -zxvf redis.tar.gz -C /usr/local

7.解压zip文件到/usr/local目录下

unzip grade-3.3-bin.zip -d /usr/local

8.把某个文件夹打包成zip,比如将test目录打包成test.zip

zip -r test.zip test

9.创建软链接/var/test指向/var/www/test

ln -s /var/www/test /var/test; 

10.删除软链接,注意后面不要加/

rm -rf /var/test

11.统计某个文件具体的行数

wc -l filename

12.统计某个文件的字数

wc -c filename

13.统计某个文件的单词数

wc -w filename

14.统计当前目录的文件个数

ls -l | wc -l

15.远程拷贝文件到另外一台服务器的/usr/local/temp目录下

scp file.txt root@hostname:/usr/local/temp/

16.拷贝远程服务器的某个目录到本地的/usr/local/temp目录下

scp root@hostname:/wwww/*  /usr/local/temp

很多时候可能有ssh端口限制,需要加上端口号进行传输

scp -P 2244 client.xml root@hostname:/usr/local/temp

17.有的时候文件传输考虑到性能问题,我们采用异步传输 将本地目录/home/app与远程/usr/local/temp目录同步,启动压缩

rsync -avz /home/app root@hostname:/usr/local/temp

18.有些时候可能需要查询日志,但是目录比较长不太好找,可以通过配置alias来很快速的查找文件夹

alias weixin_logs="cd /data/applogs/weixin/weixin.2021-08-30.log"

然后进入linux之后可以通过输入weixin_logs,可以直接到/data/applogs/weixin/weixin.2021-08-30.log文件

查询Linux系统相关

1.查看linux内核版本

cat /proc/version
uname -r

2.查看内核/操作系统的信息

uname -a

3.查看系统版本号

lsb_release -a

4.查看系统CPU执行情况

top -c

5.查看CPU统计信息

mpstat 1

6.查看虚拟内存统计信息

vmstat 2;//每隔2s进行统计

7.查看IO统计信息

iostat 2;//每隔2s进行统计

8.监测硬件和启动消息

dmesg

9.查看CPU的信息

cat /proc/cpuinfo

10.查看内存信息

cat /proc/meminfo

11.查看内存的已使用和可用 -m单位为M

free -m

12.新建用户

adduser cdn

设置密码

passwd cdn

13.删除用户

deluser -remove-home cdn

14.创建组

groupadd test

删除分组

delgroup test

15.Linux内存清理命令

free -m ;//查看内存使用情况
echo 1 > /proc/sys/vm/drop_caches;//开始清理

查询进程相关

1.查看所有的进程

ps -aux

2.查看所有的Java进程

ps -ef|grep java

3.查看启动redis的服务

netstat -lp|grep redis

4.查看端口8080是否被监听

netstat -nltp|grep 8080

5.列出所有活跃的进程打开的文件

lsof;
lsof -u admin;//列出所有admin用户打开的文件

6.列出最近使用pip命令的1000条记录

history 1000|grep pip

安装软件相关

1.解压rpm文件

rpm --install couchbase-server-enterprise-3.0.3-centos6.x86_64.rpm

2.查看所有安装的软件包

rpm -qa

3.查看系统所有的内核

rpm -qa|grep kernel

4.删除内核kernel-headers-3.10.0-327.el7.x86_64

yum remove kernel-headers-3.10.0-327.el7.x86_64

5.从源码进行安装,进入文件的根目录下执行下面的命令

./configure
make
make install

网络及防火墙设置相关

防火墙相关的命令

1.列出系统所有服务启动的情况

chkconfig --list

2.查看防火墙的状态

service iptables status

3.打开防火墙

service iptables start

4.关闭防火墙

service iptables stop

5.为防火墙添加端口和IP,需要在/etc/sysconfig/iptables目录编辑 添加允许1006端口访问

iptables -A INPUT -p tcp --dport 1006 -j ACCEPT

允许192.168.60.87能够访问

iptables -A INPUT -s 192.168.60.87 -p tcp -j ACCEPT
网络相关的命令

1.查询域名所对应的IP地址能够知道整个解析的过程

nslookup www.baidu.com

获取指定域名的DNS信息

dig www.baidu.com

2.列出所有网络端口和IP地址

ifconfig -a

列出指定以太网端口对应的IP地址和详细信息

ifconfig eth0

3.监控网络带宽,需要安装iftop

iftop

4.列出系统的活跃连接

netstat -tupl

操作磁盘相关

1.查看磁盘的使用情况

df -h

2.查看目录的大小

du -h

3.查看某个目录下所有文件的及文件大小

du -sh *
du -sh *|sort -nr;//排序

4.查看当前的所有分区

fdisk -l

grep&sed&awk的用法

Linux中最重要的三个命令在业界被称为"三剑客",它们是grep,sed,awk

  • grep擅长查找功能
  • sed擅长取行和替换,本身是一个管道命令
  • awk擅长取列

sed的常用命令: a∶新增 a的后面可以接字符串 c∶取代 c的后面可以接字符串,这些字串可以取代n1,n2之间的行 d∶删除 d的后面不接字符串 i∶插入 i的后面可以接字符串,而这些字串会在新的一行出现(目前的上一行)

1.删除hello.txt文件中的第一行

sed "1d" hello.txt

2.删除hello.txt文件中的最后一行

sed "$d" hello.txt

磁盘分区

1.查看磁盘使用情况

[root@VM_176_224_centos ~]# fdisk  -l    #查看磁盘使用情况
Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005fc9a
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    41943039    20970496   83  Linux

Disk /dev/vdb: 85.9 GB, 85899345920 bytes, 167772160 sectors  看到有一个/dev/vdb磁盘
Units = sectors of 1 * 512 = 512 bytes                        是没有使用的
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

2.对数据盘/dev/vdb进行分区

[root@VM_176_224_centos ~]# fdisk   /dev/vdb     
Command (m for help): n                   n表示创建一个分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p                     p表示 创建的是一个主分区
Partition number (1-4, default 1): 1         1表示这是第一个分区
First sector (2048-167772159, default 2048):           起始大小,默认 Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-167772159, default 167772159): +20G  
Partition 1 of type Linux and of size 20 GiB is set                 创建20G的一个分区
Command (m for help): n   
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2       表示这是第二个分区
First sector (41945088-167772159, default 41945088):
Using default value 41945088
Last sector, +sectors or +size{K,M,G} (41945088-167772159, default 167772159): 这里默认回车Using default value 167772159                            表示所有的空间全分出去
Partition 2 of type Linux and of size 60 GiB is set
Command (m for help): w           把所做的修改保存
[root@VM_176_224_centos ~]# fdisk  -l       
Disk /dev/vdb: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x67b29857
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    41945087    20971520   83  Linux
/dev/vdb2        41945088   167772159    62913536   83  Linux

3.格式化磁盘

[root@VM_176_224_centos ~]# mkfs.ext4   /dev/vdb1      对分区/dev/vdb1格式化成ext4
[root@VM_176_224_centos ~]# mkfs.ext4   /dev/vdb2

4.挂载磁盘到指定的目录

[root@VM_176_224_centos ~]# mount  /dev/vdb1   /data   把分区/dev/vdb1挂在到/data下
[root@VM_176_224_centos ~]# mkdir  /software
[root@VM_176_224_centos ~]# mount  /dev/vdb2   /software
[root@VM_176_224_centos ~]# unmount /software; //卸载/root/software挂载目录

5.查看是否挂载成功

[root@VM_176_224_centos ~]# df  -h   查看是否挂在成功
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdb1        20G   45M   19G   1% /data
/dev/vdb2        59G   53M   56G   1% /software

6.如何设置开机启动

[root@VM_176_224_centos ~]# vim  /etc/fstab         设置开机自动挂载

/dev/vdb1            /data                ext4      defaults    0  0

/dev/vdb2            /software      ext4      defaults   0  0 

创建Swap分区

1.通过命令查看系统是否有swap分区

[root@_224_centos ~]# free
             total       used       free     shared    buffers     cached
Mem:      16332028    6526084    9805944        176     302608    1812816
-/+ buffers/cache:    4410660   11921368
Swap:            0          0          0

2.在根目录创建1个10G的swap文件

[root@VM_30_103_centos ~]# dd if=/dev/zero of=./swap bs=1M count=10000
记录了1024+0 的读入
记录了1024+0 的写出
524288字节(524 kB)已复制,0.00233599 秒,224 MB/秒

3.创建交换区

[root@VM_30_103_centos /]# mkswap -f /swap
Setting up swapspace version 1, size = 508 KiB
no label, UUID=f6d806e4-ffd4-4c20-bd81-bf0b7194b38d

4.启用swap

swapon ./swap 

5.通过命令查看swap是否生效

[root@VM_30_103_centos /]# free -m
             total       used       free     shared    buffers     cached
Mem:         32108      23582       8525         30        499      16842
-/+ buffers/cache:       6240      25867
Swap:         9999          0       9999

6.设置开机自动启动,通过vim /etc/fstab

dev/vda1            /                    ext3       noatime,acl,user_xattr 1 1
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
/dev/vdb1            /root/data           ext4       defaults              0 0
UUID=e7caca55-82c7-4600-a89e-07a475bc45c4 swap       swap    defaults      0 0     

修改完成以后输入: mount -a 即可生效

关于swap常用命令的介绍

cat /proc/sys/vm/swappiness;查看swap配置使用多大比例内存之后开始使用swap
swapon -s ;swap当前使用情况
cat /proc/swaps;swap当前使用情况
swapon ./swap;启用swap分区
swapoff /swap;删除swap分区

Linux文件权限

Linux系统中的每个文件和目录都有访问许可权限,Linux使用chmod,chgrp,chown命令来修改文件权限 先来看一下例子

-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l tomcat.tgz

参数解释:

  • 第一个字符是横线表示是一个非目录的文件,如果是d表示是一个目录
  • r代表只读 w代表写,x代表可执行

chmod命令

chmod命令是非常重要的,用于改变文件或者目录的访问权限 比如我们想修改一个文件的访问权限

chmod 777 /var/home/test

具体权限说明:

  • r(Read读取):权限值是4,对文件而言具有读取文件内容的权限,对目录来说,具有浏览目录的权限
  • w(Write写入):权限值2,对文件而言具有新增,修改文件内容的权限,对目录来说,具有删除 移动目录的文件权限
  • x(eXecute 执行):权限值1,对文件具有执行文件的权限,对目录来说具有进入目录的权限

具体数值如何计算,我们来看一个例子

rwx rw- r-

rwx=4+2+1=7 rw-=4+2+0=6 r-=4+0=4

所以rwx rw- r-对应的权限值是764

为某个具体的文件赋予权限

chmod 750 test.txt

为文件赋予执行权限,a表示所有用户,x表示执行

chmod a+x test.txt

chgrp命令

chgrp用于改变文件或目录所属的组

将/opt/local,/cdn及其目录下的所有文件的组改为cdn

chgrp -R cdn /opt/local/ /cdn

chown命令

chown用于更改某个文件或目录的所属分组和用户

1.把test.txt的所有者改为test

chown test test.txt

2.把/usr/local目录下及其所有的文件和子目录的拥有者改为admin

chown -R admin /usr/local

3.把/usr/local目录下及其所有的文件和子目录的所属用户和所属分组改为admin

chown -R admin:admin /usr/local