前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux】Linux介绍与常用shell命令

【Linux】Linux介绍与常用shell命令

原创
作者头像
DevFrank
修改2024-07-26 18:48:08
280
修改2024-07-26 18:48:08
举报
文章被收录于专栏:C++开发学习交流

Q:为什么要学习Linux?

A:IT互联网企业无论是开发还是运维都要求精通Linux,因为服务器都是跑在Linux/类Linux系统上的。

物联网行业(包括自动驾驶)所用的开发系统也渐渐向Linux转移,因为开源、高效,最重要的是兼容性好。

一、什么是Linux

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件,也能在嵌入式设备(如树莓派、Jetson nano) 上安装。Linux 继承了 Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

二、Linux-Ubuntu系统安装

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

安装说明
  • 关于虚拟机与双系统的选择问题作简要说明: 1. 需要多系统协同工作环境,请选择虚拟机,如做网络安全与渗透测试需要搭建的eNSP和Kali Linux+靶机 2. 需要纯净和性能较好的车辆机器人开发环境,请选择双系统,如运行Apollo/Autoware自动驾驶工具或进行GPU神经网络和深度学习等
  • Linux(Ubuntu)安装问题 1. 系统的安装过程可能会有各种bug出现,提供以下推荐安装标准,其他bug请自行/讨论解决 2. 对于个人/团队开发者而言,一种最简单的安装方法如下: - 下载Linux镜像文件(如Ubuntu 18.04.06LTS.iso),使用软碟通制作镜像盘,然后电脑开机按F8进入U盘启动,进行安装流程 - 推荐的分区方法:两个分区u即可【1./efi(系统启动分区,1-10G) 2./(其余空间都给它)】 3. 安装完成后电脑重启会自动进入引导程序,选择ubuntu启动,已经预装了包括浏览器等软件,这时我们先检查一下系统情况 - 首先更新软件源,在软件和更新中选择清华源/中科大源 - 安装systemback系统备份恢复工具(/README),将当前系统备份(备份的好处不多说了) - 可选择安装图形化软件管理工具Synaptic Package Manager

三、Linux系统启动过程

linux启动时我们会看到许多启动信息。

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段

1.内核的引导

首先电脑主板中的BIOS开机会自检硬盘中的启动设备。

操作系统接管硬件后,首先读取/boot目录下的内核文件。

2.运行init

init进程时系统所有进程的起点,读取的是配置文件/etc/inittab。

许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。

3.系统初始化

在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 

它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行的任务。

4.建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。

init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

代码语言:javascript
复制
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

5.用户登录系统

一般来说,用户登陆方式有 3 种:

  • 命令行登录
  • ssh登录
  • 图形界面登录 一般我们装的Ubuntu系统都是可以图形界面登录,输入安装时设置的账号密码。

最后,个人PC上的Linux每天要关机,除了图形界面的关机按钮外,命令行关机有以下:

正确的关机流程为:sync > shutdown / reboot / halt

代码语言:javascript
复制
	sync:将数据由内存同步到硬盘中,防止数据丢失(有教训)。
	
	shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
	
	shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。
	
	shutdown –h now 立马关机
	
	shutdown –h 20:25 系统会在今天20:25关机
	
	shutdown –h +10 十分钟后关机
	
	shutdown –r now 系统立马重启
	
	shutdown –r +10 系统十分钟后重启
	
	reboot 就是重启,等同于 shutdown –r now
	
	halt 关闭系统,等同于shutdown –h now 和 poweroff

四、Linux文件系统结构

代码语言:javascript
复制
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:
 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
 该目录存放一些服务启动之后需要提取的数据。

/sys:

这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

/usr:
 usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:
内核源代码默认的放置目录。

/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

五、Linux常用命令

代码语言:javascript
复制
sudo apt-get update	// 软件更新
sudo apt-get upgrade	// 软件升级
sudo apt-get autoremove	// 自动移除不必要的包
sudo dpkg -i package_file.deb	// 安装deb套件包
sudo dpkg -r package_name	// 反安装deb套件包
cd、pwd、ls、mkdir、sudo、chmod、rm、mv、cp		// 文件目录操作
ifconfig		// 网络配置	

以上。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是Linux
  • 二、Linux-Ubuntu系统安装
    • 安装说明
    • 三、Linux系统启动过程
    • 四、Linux文件系统结构
    • 五、Linux常用命令
    相关产品与服务
    网站渗透测试
    网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档