概述
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 #卸载