Linux

 

概述

Linux指的是内核,在内核基础上有很多的发行版本,Linux操作系统主要用作服务器端操作系统作为IT系统的一个核心基础,有些发行版也有提供方便的图形界面,但可用软件包并不是很多,所以在个人桌面应用领域使用并不是很广泛,另外在嵌入式领域也有应用。

Unix开源,大公司基于unix开发了一些商业系统,但不能免费对外开放使用,于是就发起了GUN开源计划,大神Linus基于GUN计划开发了Linux Kernal,然后其他人在Kernal的基础上开发了很多的应用程序。

 Linux基于AT&T的Minix提供了Linux Kernal后,就出现了各个版本的Linux发行版。

网络模式

桥接桥接是虚拟机直接使用一个根主机网络相同网段的网络,自动生成,在多虚拟机环境下容易出现ip冲突
NAT

NAT是为虚拟机创建一个与主机网卡网段不同的虚拟网络,虚拟机和这个虚拟网卡是通的,也就是虚拟机自己构建了一个局域网

仅主机

仅主机是表示一个独立的网卡,相当于一个独立的主机,可以随意配置

目录结构

lrwxrwxrwx.   1 root root    7 Nov  3  2020 bin -> usr/bin
dr-xr-xr-x.   6 root root 4096 Sep 14 23:05 boot
drwxr-xr-x.  21 root root 4020 Sep 14 23:30 dev
drwxr-xr-x. 131 root root 8192 Sep 14 23:37 etc
drwxr-xr-x.   2 root root    6 Nov  3  2020 home
lrwxrwxrwx.   1 root root    7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Nov  3  2020 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Nov  3  2020 media
drwxr-xr-x.   2 root root    6 Nov  3  2020 mnt
drwxr-xr-x.   3 root root   17 Sep 15 02:06 opt
dr-xr-xr-x. 189 root root    0 Sep 14 23:30 proc
dr-xr-x---.   4 root root  192 Sep 15 01:13 root
drwxr-xr-x.  35 root root  960 Sep 15 02:11 run
lrwxrwxrwx.   1 root root    8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Nov  3  2020 srv
dr-xr-xr-x.  12 root root    0 Sep 14 23:30 sys
drwxrwxrwt.  10 root root 4096 Sep 15 02:14 tmp
drwxr-xr-x.  12 root root  144 Sep 14 23:00 usr
drwxr-xr-x.  21 root root 4096 Sep 14 23:05 var
  • /boot  存放启动Linux是使用到的核心文件,包括一些连接文件及镜像文件;
  • /bin 所有用户都可以访问并执行的可执行程序,包括超级用户及一般用户;
  • /usr/bin 面的都是系统预装的可执行程序,会随着系统升级而改变;是系统安装时自带的一些可执行程序,即系统程序;
  • /usr/local/bin 给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件;
  • /sbin → /usr/sbin、/usr/local/sbin 存放系统管理员使用的命令;
  • /home 普通用户的主目录,每个用户对应一个自己的目录,目录名称与账号名相同
  • /root root用户主目录;
  • /lib 存放系统开机所需要的最基本的动态连接共享库,几乎所有的应用程序都会用到;
  • /lost+found 一般是空的,当非法关机时会存放一些文件;
  • /etc 存放所有系统管理所需要的配置文件和子目录;
  • /usr 类似于windows的program files目录;
  • /proc 不能动
  • /srv 不能动
  • /sys 不能动
  • /dev 类似于windows的设备管理器,把所有的硬件用文件的形式存储;
  • /media 系统识别到的设备会挂在到这个目录下 ;
  • /opt 额外安装软件的目录,一般将软件安装在改目录,把命令放入/usr/local/bin;
  • /usr/local 另一个额外安装软件的目录,一般是通过编译源码安装的程序;
  • /var 存放一些不断扩充的文件,比如日志文件;

远程登录

>ssh user@ip  登录远程主机
>scp username@servername:/path/filename /local/path   从服务器下载文件到本地
>scp /local/path/local_filename username@servername:/path  将本地文件上传的服务器
>scp -r username@servername:/path /path  从服务器下载整个目录
>scp -r /path  username@servername:/path  上传目录到服务器

vi/vim

正常模式用vi打开一个文件后就进入了正常模式,在这个模式中可以用上下左右来移动光标
插入模式按i、I、o、O、a、A任何一个字母就可以进入编辑模式
命令行模式通过esc进入正常模式后输入:就进入了命令行模式,完成存盘、查找、退出等操作

 关机重启

>shutdown -h now     #立即关机
>shutdown -h 1       #1分钟后关机
>shutdown -r now     #立即重启
>halt    #立即关机
>reboot  #立即重启
>sync    #把内存中的数据同步到磁盘

用户管理

useradd、passwd、userdel、usermod、id、su、groupadd、groupdel

chown、chgrp、

用户

>useradd malin   新增一个用户,默认家目录为/home/malin
>userddd -d /home/malin1 malin  新增一个用户时指定它的家目录
>passwd malin   给malin这个用户修改密码,如果不加用户名就是给当前用户修改密码
>userdel malin   删除用户,但保留家目录
>userdel -r malin 删除用户,同时删除家目录

>id root  #查看root用户信息
id=0(root) gid=0(root) groups=0(root)

>su tom  #从用户malin切换到用户tom
>exit/logout  #退回到原来的用户malin

>su tom  #从用户malin切换到用户tom
>exit/logout  #退回到原来的用户malin

>chown user file #修改问价所属用户

用户组

>groupadd dev  #添加用户组
>groupdel dev  #删除用户组
>useradd -g dev malin #创建用户时制定用户组
>usermod -g dev tom   #修改用户信息,把tom重新放入dev这个组中

>chgrp [-R] newgroup file/dir  #修改文件或目录所属的用户组

相关文件

  • /etc/passwd 记录包括密码在内的各种用户信息
  • /etc/shadow 口令配置文件
  • /etc/group 组的配置文件,记录所有的组信息

权限 

chmod

表示形式

-rw-r--r--. 1 root root    0 Sep 15 02:55 Hello.java
-rw-------. 1 root root 1145 Sep 14 23:04 anaconda-ks.cfg

0~9位说明:
0:文件类型,l-连接,d-目录,c-字符设备文件(鼠标键盘等),b-块文件,比如磁盘
1~3:该文件所有者拥有的权限
4~6:同用户组拥有的权限
7~9:其他用户拥有的权限

rwx-文件:
r:可以读取查看
w:可以修改但不可以删除,删除要看对当前目录是否有w权限
x:可执行

rwx-目录:
r:可以查看目录内容
w:可以创建、删除、重命名目录/子目录
x:可进入该目录

【权限】【目录深度】【所属用户】【所属用户组】【文件大小】【修改时间】【文件名】

变更方式

u:所有者,g:所属组,o:其他用户
>chmod u=rxw,g=rx,o=x file/dir
>chmod o+w
>chmod a-x

r=4,w=2,x=1
>chmod u=rxw,g=rx,o=x file/dir == >chmod 751 file/dir

>chmod newowner file/dir  #变更所有者
>chmod [-R] newowner:newgroup file/dir #修改所有者和组

帮助命令

>man 命令
>help 命令

文件目录命令

pwd、ls、ll、cd、mkdir、rmdir、touch、cp、rm、mv、cat、more、less、head、tail、echo、link、history

>pwd #显示当前目录全路径
>ls -al
>ll
>cd 目录
>cd ~
>cd ..
>mkdir path #创建目录,父目录不存在会报错
>mkdir -p path #如果父目录不存在就创建
>rmdir dirpath #删除空目录,如果目录下有文件则不能删除  rm -fr dirpath
>touch file    #创建文件
>cp [-r] source dest #将source拷贝到dest目录下,-r为递归拷贝子目录
>rm file/dir #删除文件或目录
  -f #强制删除
  -r #递归删除子目录
>mv oldFileName newFileName  #重命名
>mv dirName targetDirName    #移动
>cat file #查看文件内容
  -n #显示行号
>more file #分页显示,一次性加载
  空格 向下翻页
  Enter 向上翻页
  q 退出
>less file  #分页显示,分页加载
  空格 向下翻页
  ↓ 向下翻页
  ↑ 向上翻页
  /str 查找指定的字符串,n-向下找  N-向上找
  q 退出
>head -n 10 file #显示文件的头10行
>tail -n 100 -f file #显示文件的末尾100行,并一直监听  tail -100f file
>echo "Hello World" 输出内容
>“>” 重定向-覆盖  ">>" 重定向-追加
>ln -s 源文件/目录 软连接名
>history #查看历史执行命令
>history 10 #查看历史执行命令最后10条

时间与日期

date、cal

>date '+%Y-%m-%d %H:%M:%S'
>cal #查看当前月份的日历
>cal 09 2020 #查看指定年份/月份的日历

搜索查找

find、locate、grep

>find 从指定目录向下递归遍历各个子目录,将满足条件的文件显示出来
>find /home -name hello.txt
>find /opt -user nobody
>find / size +200M  #查找大于200M的文件
  -name 按名称查找
  -user 按所属用户查找
  -size 按照文件大小查找

>locate 通过一个快表来定位文件,比find要块,但要先执行updatedb
>updatedb
>locate /root Hello
>grep 
   -n 显示行号
   -i 忽略大小写
>cat /home/hello.txt | grep yes
>grep -n "yes" /home/hello.txt

压缩与解压

gzip、gunzip、zip、unzip、tar

>gzip/gunzip #压缩/解压
>gzip file #将file进行gzip压缩
>gunzip file.gz  #解压

>zip/unzip #压缩打包/解压解包
>zip -r dir.zip file/dir #对目录或文件进行压缩/解压
>unzip dir.zip  #解压
>unzip -d path dir.zip #解压到指定目录

>tar #压缩打包/解压解包
  -c 生成tar打包文件
  -v 显示详细信息
  -f 指定压缩文件名称
  -z 打包的同时进行压缩 
  -x 解包tar包
>tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt  #将两个文件压缩并打包
>tar -zcvf home.tar.gz /home #将目录进行压缩打包
>tar -zxvf pc.tar.gz #解包后解压
>tar -zxvf pc.tar.gz -C /opt/tmp #解压到指定的文件夹

定时调度

>crontab
 -e 编辑定时任务
 -l 查询定时任务
 -r 删除当前用户线所有的定时任务


>tail -100 /var/log/cron   #查看crontab日志
>service crond restart     #重新开始调度

 磁盘管理

lsblk、fdisk、mkfs、mount、umount

①分配磁盘、②磁盘分区、③格式化分区 ④挂载  ⑤卸载

>lsblk -f #查看设备挂在情况
NAME               FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
|-sda1             vfat              51C2-D2E5                              /boot/efi
|-sda2             xfs               3c1b96db-ce8c-4048-ac77-87db718b6e79   /boot
`-sda3             LVM2_member       JdyVyf-p3rf-azlA-o3qH-fofT-9WCk-ioBidG
  |-cl_fedora-root xfs               10613c04-83f6-4394-a90b-c4cb6e7bcfb6   /
  |-cl_fedora-swap swap              cdc87f34-51d0-4dd3-b07f-0444e653266d   [SWAP]
  `-cl_fedora-home xfs               acf74728-33b4-4d27-9766-0854a7e9997b   /home
sr0

①分配磁盘 略
②磁盘分区
>fdisk /dev/sdb  #对sdb磁盘进行分区
   m:显示命令列表
   p:显示磁盘分区
   n:新增分区
   d:删除分区
   w:写入并退出

③格式化磁盘分区
>mkfs -t ext4 /dev/sdb1   对第一个分区进行格式化

④挂载
>mount /dev/sdb1 /newdisk

⑤卸载
>umount /dev/sdb1  
或
>umount /newdisk

通过mount进行挂载的磁盘在重启后会小时,永久挂载需要修改配置文件

vi /etc/fstab

/dev/mapper/cl_fedora-home /home                   xfs     defaults        0 0
/dev/mapper/cl_fedora-swap none                    swap    defaults        0 0
>du 查看指定目录的磁盘使用情况
  -h 带计量单位
  -a 含文件
  -max-depth=1 子目录深度
  -c 增加汇总值

>du -ch --max-depth=1

#统计文件夹下的文件个数
>ls -l /opt | grep "^-" | wc -l
#统计文件夹下目录的数量
>ls -l /opt | grep "^d" | wc -l

#统计文件夹下的文件个数,包含子目录
>ls -lR /opt | grep "^-" | wc -l
#统计文件夹下目录的数量,包含子文件夹
>ls -lR /opt | grep "^d" | wc -l

>tree /opt   #查看目录结构

网络管理

/etc/sysconfig/network-scripts/ifcfg-enp0s5

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
#====================
BOOTPROTO=static
IPADDR=10.211.55.5
GATEWAY=10.211.55.1
NETMASK=255.255.255.0
DNS1=10.211.55.1
DNS2=8.8.8.8
#=====================
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s5
UUID=6967b686-694b-4506-8eaa-76aff494e5bf
DEVICE=enp0s5
ONBOOT=yes
>service network restart
>systemctl restart network.service

/etc/hostname

/etc/hosts

>netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      862/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      856/cupsd
tcp6       0      0 :::22                   :::*                    LISTEN      862/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      856/cupsd

进程管理

ps、kill、killall、pstree

#aux不会显示线程的父子关系
>ps -aux | grep ssd
root         798  0.0  0.8  59156 13164 ?        Ss   Sep14   0:00 /usr/sbin/sssd -i --logger=files
root         816  0.0  0.9  60004 14264 ?        S    Sep14   0:00 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
root         821  0.0  2.6  73192 39704 ?        S    Sep14   0:02 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
root        2275  0.0  0.0   2828   884 pts/0    S+   05:27   0:00 grep --color=auto ssd

#ps -ef会显示进程的父子关系
>ps -ef | grep ssd
root         798       1  0 Sep14 ?        00:00:00 /usr/sbin/sssd -i --logger=files
root         816     798  0 Sep14 ?        00:00:00 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
root         821     798  0 Sep14 ?        00:00:02 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
root        2352    1435  0 05:30 pts/0    00:00:00 grep --color=auto ssd

kill 按照pid删除,-9 强制终止

killall 按照服务名称终止,很少用

>pstree -pu
systemd(1)-+-ModemManager(795)-+-{ModemManager}(804)
           |                   `-{ModemManager}(811)
           |-NetworkManager(825)-+-{NetworkManager}(851)
           |                     `-{NetworkManager}(853)
           |-agetty(1079)
           |-alsactl(802)
           |-atd(1061)
           |-auditd(769)-+-sedispatch(771)
           |             |-{auditd}(770)
           |             `-{auditd}(772)
        

  -p 显示进程ID
  -u 显示进程所属用户

服务管理

service、systemctl、firewall-cmd

service start/stop/restart/reload/status serivceName  新版本的centos已经不提供这个命令了,用systemctl替代。

>systemctl
  start/stop/restart/status
  list-unit-files  | grep service  #查看服务开启启动状态
  enable service  #设置为开启启动
  disable service #设置为开启不启动
  is-enabled service #查看服务开机启动状态


>systemctl list-unit-files | grep firewall
>systemctl status firewalld.service
>systemctl is-enabled firewalld.service
>systemctl disable firewalld.service
firewall-cmd --permanent --add-port=端口号/协议      #开放端口
firewall-cmd --permanent --remove-port=端口号/协议   #关闭端口
firewall-cmd --reload   #重新载入才能生效
firewall-cmd --query-port=端口号协议   #查询端口是否开放

进程监控

top、netstat

top与ps命令很相似,他们都用来显示正在执行的进程。

top
 -d 指定top命令每隔几秒钟更新一次,默认时3秒
 -i 使top不显示任何闲置或僵死的进程
 -p 通过指定监控进程的id来仅仅监控某个进程的状态

交互说明:
P:以cpu使用率排序,默认就是此项
M:以内存使用率排序
N:以PID排序
q:退出
netstat -nap
netstat -nltp

软件安装

rpm 
-i : install 安装
-v : verbose 详情
-h : hash 进度


yum install xxx.rpm
yum list | grep firefox
yum e firefox #卸载

Shell脚本

参考

063_韩顺平Linux_NAT网络原理图_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

echo20222022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值