文章目录
简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。
Linux诞生于1991年、发展至今已然成为当今主流、且先进并富有生命力的一款操作系统。被广泛使用在服务器、嵌入式系统和个人计算机等多个方面。
先拜见下祖师爷:
祖师爷牛*!
提起Linux,就不得不说Unix,Unix诞生与1969年的bell实验室,它是Ken.Thompson和Dennis Ritche在DEC PDP-7小型计算机系统上开发的一个分时操作系统。
而Linux就是一种类Unix系统,采用了几乎一样
的接口
。
POSIX 标准
可移植操作系统接口(Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,保证编写的应用程序在代码级可以移植到多种操作系统。
常用的Linux发行版
名称 | 简介 | 官网 |
---|---|---|
Debian Linux | 稳定、更快更容易的内存管理 | https://www.debian.org/ |
Ubuntu | 界面美观、桌面办公、服务器等应用 | https://www.ubuntu.com |
Red Hat | 红帽、是目前世界上使用最广泛的Linux操作系统、稳定且安全 | https://www.redhat.com/ |
Centos | RHEL源码再编译,和红帽有着千丝万缕的关系 | www.centos.com/ |
SUSE | 易用的YaST软件包管理系统 | www.suse.com/ |
kail-linux | 由BT5发展而来、拥有最丰富的渗透测试工具,基于Debian | https://www.kali.org/ |
… | … | … |
他们之间的联系就是都是基于linux内核的。
系统结构
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。Linux内核主要由内存管理、进程管理、虚拟文件系统、进程间通信和网络接口组成。
1.内存管理
Linux的内存管理方式采用的是虚拟内存
,当内存不足时可以提供内存置换(swap)。
2.进程管理
内核分配CPU资源到程序,LInux下有三种进程调度的策略:SCHED_OTHER、SCHED_FIFO和SCHED_RR。
3.虚拟文件系统
虚拟文件系统(Virtual File System, 简称 VFS), 隐藏了许多硬件细节、对于上层提供只抽象,使得linux可以多种文件系统共存。
4.进程间通信
进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。linux中常用的进程通信方式有、信号
、管道
、消息队列
、共享内存
、套接字
等方式。
5.网络接口
Linux提供了对多种网络标准的存取和各种网络硬件的支持。
shell
shell是一个命令解释器,介于用户与内核之间的一个接口。
Linux中有多种shell,其中最常用的是bash shell。
查看当前系统有哪些shell
cat /etc/shells
- /bin/sh:传统Unix下shell,已经被/bin/bash所取代
- /bin/bash:大多数Linux系统默认使用的shell
查看系统当前正在使用的shell
echo $SHELL
bash下敲命令时,Tab键可以补全已经敲了一部分的文件名、目录名或者命令名,如果敲一下Tab没有自动补全,可能是没有这个开头的命令或文件名,另一种可能是存在多个这种开头的命令、文件或目录名。
一些常用的快捷键
按键 | 功能 |
---|---|
↑(ctrl+p) | 显示上一条命令 |
↓(ctrl+n) | 显示下一条命令 |
ctrl+l | 清屏 |
ctrl+c | 停止当前正在运行的程序 |
ctrl+z | 暂停程序 |
… | … |
详细可访问:https://blog.csdn.net/csdn_980979768/article/details/47148013
Linux 的文件结构
Linux没有盘符,所有文件都在最大的目录 / 下
目录名 | 内容 |
---|---|
/bin | 存放各种可执行命令(文件),可被各种用户使用,如:cat,ls,cp,bash…等 |
/boot | 存放一些开机配置文件,.img文件,grub为开机引导程序 |
/dev | device,Linux一切皆文件,硬件设备也以文件的形式保存在此文件夹中 |
root | 管理员用户的家目录 |
home | 用户家目录,如新建用户xx,则在home目录下会默认新建子目录xx |
/etc | 存放系统配置文件,如账号密码文件等 |
/opt | 可放置一些自行安装的额外软件 |
/mnt | 挂载的文件系统存放在此 |
/sbin | 主要放置系统管理的必备程序,例如:cfdisk、dhcpcd、dump、e2fsck、fdisk等,需要root权限 |
/tmp | 存放临时文件 |
/usr | 不是user!!!Unix Software Resource的缩写, Unix操作系统软件资源放置的目录,而不是用户的数据;所有系统默认的软件都会放置到/usr |
/srv | service,存放一些常用的服务 |
/lib | 一些函数库 |
/sys | 硬件设备的驱动程序和已加载的核心模块信息 |
/media | 放置可移动存储设备目录 |
/proc | 放置的数据都是在内存当中, 例如系统核心、行程信息(process)、周边装置的状态及网络状态等 |
/run | 系统运行所需文件 |
/lost+found | 档案系统发生错误时, 将一些遗失的片段放置到这个目录下 |
… | … |
以上就是一些Linux系统常见的目录了,当然Linux版本众多,不同的版本之间会有些细微的差距。
常用命令、快捷键、操作
由于Linux命令众多,参数更是纷繁复杂,不可能在一篇博客中涉及所有,所以如果使用中出现了任何困难,则需查看帮助手册:
#man 命令名
或
#命令名 --help
who
显示关于当前在本地系统上的所有用户的信息。
常用参数
- -q:只显示登入系统的帐号名称和总人数
- -w:显示用户的信息状态栏
- …
例:
显示的内容为登录名、tty、登录日期和时间和(ip)。
whoami
查看当前登录用户
图形-字符切换
虚拟机下
字符界面ctrl+alt + F1~F6
切换回图形界面alt+F7
uname
用于显示系统信息
#uname -a
ls
查看命令
# ls [-aAdfFhilnrRSt] file|dir
参数:
-R:连同子目录内容一起列出
-l :以长数据串行列出,包含文件的属性与权限等等数据
drwxr-xr-x 2 root root 4096 Jun 17 19:02 c++
其中d表示目录 r表示可读 w表示可写 x 表示可执行 ;
对于第一个字符有
字符 | 表示 |
---|---|
d | 目录 |
- | 普通文件 |
l | 符号链接 |
… | … |
d后面三位为当前用户对此文件或目录的权限,下一个三位表示同组用户权限,再下三位表示其他用户权限,2 表示节点数,第一个root表示所属用户,第二个则表示所属组,4096表示文件大小,Jun 17 19:02 表示创建或更新时间,由于权限是三位来表示 ,此时三位权限都有,用数字表示就是7:
权限 | 十进制 | 二进制 |
---|---|---|
r(读权限) | 4 | 100 |
w(写权限) | 2 | 010 |
x(执行权限) | 1 | 001 |
所以如果是可读可写可执行,此时权限就是7,如果是对于所有用户都是可读可写可执行,那么文件此时的权限就是777。
-a:列出所有文件包括隐藏文件
cd
更改目录
#cd cd [相对路径或绝对路径]
运用cd命令可以自由穿越目录。
参数:
~:进入当前用户家目录,同直接cd一样
“-”:回到上一个所在目录
“. .”回到上一级目录
mkdir
创建目录
# mkdir [-mp] 目录名称
-m :配置目录权限
# mkdir -m 777 test1
-p :递归创建目录
# mkdir -p blog/test
rmdir
删除目录,目录必须为空。
rmdir [-p] 目录名称
非空目录不能删除,所以尝试递归删除blog目录下的test目录,删除成功,
使用:
# rm -rf [xxx目录名]
也可以强制删除目录,但是rm -rf
这个命令要慎用,切记切记~
-p :递归删除目录
cp
就是copy的缩写
cp 参数 文件 目的目录
常用参数:
-i :若目标文件已经存在时,在覆盖前会先询问
-p :连同文件的属性一起复制过去
touch
更新文件修改时间,如果没有文件 则会创建新的文件
#touch [参数] 文件名
which
查看命令所在路径
如:
#which pwd
pwd
查看当前目录
#pwd
因为此时是以root用户登入的系统,则~目录为root。
env
查看环境变量
设置环境变量
为什么linux系统中的命令直接敲名字就能执行,而自己写的程序则需要咱本目录下./执行,原因是系统命令所在的文件夹都加入到了环境变量当中去,要是想自己写的程序也想系统命令那样执行,也需要将程序所在文件夹加入到环境变量。
#vim ~/.bashrc
文末加入
export PATH=$PATH:/home/whoiami/blog (等号后面是可执行文件所在目录)
重新开一个终端(因为每次开终端都会重新加载配置文件.bashrc)
输入自己的命令:
此时的配置只对当前用户生效。
如果需要对所有用户生效则都需要修改系统环境变量
sudo vim /etc/profile
还有一种修改环境变量的方式
#export PATH=/xxxx/xxx/:$PATH
但是这种方法只对当前用户当前窗口有效,优点是方便且立即生效。
cat
查看文件内容
#cat 文件名
rm
删除文件
#rm 文件名
强制删除:
#rm -rf
mv
可以作为为文件重命名也可以作为移动命令
重命名
#mv 文件名 新名字
移动
#mv 文件名 目标目录
more
查看文件,一屏一屏显示
#more 文件名
同样查看文件的还有less、head、tail等。
ln
#ln 文件名 链接名
链接分为软连接和硬链接,其中软链接又成为符号链接。ln命令默认为硬链接。
软连接:
#ln -s 文件名 链接名
修改软硬链接内容都会修改原文件内容。
软连接相当于Windows下的快捷方式,而硬链接则相当于程序中两个变量共享一块内存,因为,在创建一个文件时,文件名作为节点链接到磁盘,而软连接与节点项链,硬链接则直接与磁盘内容相连,创建硬链接后,即使删除原有文件,还是可以通过硬链接访问当原内容;软链接则不行。
wc
用来计数的命令
#wc 文件名
上图表示2行、两词、47个字符
wc也可以通过管道命令进行组合,比如查看当前pc的ssh连接数
#w | grep pts |wc -l
常用参数:
- -c 只显示 Bytes 数。
- -l 只显示列数。
- -w 只显示字数。
du
检查目录使用情况
#du
- -a
显示所有目录或文件的大小 - -b
以byte为单位,显示目录或文件的大小 - -c
显示目录或文件的总和 - -k
以KB为单位输出 - -m
以MB为单位输出 - -s
仅显示目录或文件的总计数值 - -h
以K,M,G为单位,提高信息可读性
df
查看磁盘使用情况
#df
ps
显示当前进程 (process) 的状态
常用参数:
- -au 显示较详细的信息
- -aux 显示所有包含其他使用者的行程
- -A 列出所有的行程
例:
#ps -A
#ps -aux
jobs
显示Linux中的任务列表及任务状态,包括后台运行的任务
参数:
- -l:显示进程号;
- …
如:当使用ctrl+z
暂停top
程序时
#jobs -l
fg
把后台或挂起作业移到前台运行
将top继续执行
#fg 1
top
实时查看进程,与Windows任务管理器同理
kill
将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止
常用参数:
- -l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
- -s <编号> 指定要送出的信息。
常用:杀死进程
#kill -9 pid号
chmod
修改文件权限,chmod的设定有两种文字设定和数字设定,数字设定可参考上面ls的命令解释。
文字设定:
#chmod [用户或组] [操作] [权限] 文件名
其中用户或组可以为
- -u(文件所有者)
- -g(文件所有组)
- -o(其他用户)
- -a(所有)
例:
#chmod +x [filename]
ifconfig
查看网卡信息
#ifconfig
例:
netstat
显示网络连接信息
常用参数
- a显示所有信息
- c每隔1s刷新一遍
- t显示tcp连接
- u显示udp连接
例:
#netstat -ac
grep
文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来
#grep "stdio.h" /lib -R
find
#find [范围] -name [要搜索的文件名]
如:
# find ~ -name inode_2
fdisk
#fdisk -l
列出所有分区表
mount
用来挂在磁盘设备。
在挂在前查看下磁盘信息
#fdisk -l
插入磁盘
红框内sdb的为新插入的磁盘信息。
挂载
# mount /dev/sdb /mnt/
挂载成功。
注意:挂在成功之后被挂载的文件夹原来的文件访问不到,卸载之后才能访问到。
卸载
#umount /mnt
dd
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
常用参数
- if(input file)输入文件
- of(output file)输出文件
- …
例:
拷贝
#dd if=xxx of=xxx
制作u盘启动盘
#sudo dd if=~/xxx/ubuntu.iso of=/dev/sdb
上述将xxx文件夹下的Ubuntu镜像写入sdb将其制作为u盘启动盘。
tar
用来建立,还原备份文件的工具程序
常用参数:
- -c 建立新的备份文件
- 指定备份文件
- -v 显示指令执行过程
- -x从备份文件中还原文件
- z通过gzip指令处理备份文件
- r 把要存档的文件追加到档案文件的未尾
- t 列出档案文件的内容,查看已经备份了哪些文件
- j 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压
- -C<目的目录> 指定目标目录解压
例:
用gzip打压缩包
#tar -zcvf raw.tar.gz raw/
解压gz包
#tar -xvzf raw.tar.gz
除了tar还有zip和rar,使用方式大同小异。
useradd
添加新的用户账号
用法:
#useradd [参数] username
常用参数:
- -d 指定用户主目录
- -g 指定用户所属的用户组
- -s 指定用户的登录Shell
例:
#useradd -d /home/ulis -m ulis
安装软件
Linux有多种软件安装方式如包管理器安装、deb包安装、或者源码安装,由于Linux发型版本不同,使用的包管理器不同,常见的有RPM。apt、yum等。
例:使用apt安装vim
# sudo apt-get install vim
卸载
# sudo apt-get remove vim
其他包管理器同理。
deb包安装
安装
#sudo dpkg -i xxx.deb
#sudo dpkg -r xxx.deb
源码安装
由于每个软件配置参数可能不同,所以只写出一般步骤
#tar -xvzf xxxx.gz(解压)
#./configure
#make
#make install
Ubuntu虚拟机设置共享文件夹
step 1:打开虚拟机设置
点击添加文件夹,选中需要共享给Ubuntu的主机文件夹;
勾选启用共享
完成。
查看下这个文件夹:
#cd /mnt/hgfs/
init
init是Linux系统操作中不可缺少的程序之一
常用参数(个人经常用来关机重启嘻嘻):
- 0 关机
- 6 重启
常用的关机命令还有shutdown -h 0 或者poweroff。
总结
由于Linux实在博大精深,一篇博客只能粗略的了解下简单使用,真正想像使用Windows那样熟练使用Linux,则需要长期不断的实践练习,再有一定能力之后,Read the fucking codes,方能有更深入的理解。