明天去506面试,就把自己关于作业的理解贴出来,加深下印象

前端篇:

HTML是什么?
HTML是超文本标记语言的缩写,是一种标记语言 ,所谓标记语言,就是通过对标签的解释渲染出页面而无逻辑内容。
HTML是干什么用的?
网页文件本身是一种文本文件,它通过标记符号来标记要显示的网页中的各个部分。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容。综上所述,HTML是一种能被浏览器识别解析,并且能够显示相应内容的语言,在web开发中,HTML是属于书写网页结构语言,扮演着搭建网页框架结构(这里的框架结构就类似于现代建筑中,修房子需要首先搭建起框架结构一样)的作用,是web开发中必不可少的一门语言

元素包含了所有的头部标签元素。在 元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息。 可以添加在头部区域的元素标签为: ,

CSS是用来干什么的?
CSS全名叫Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表,它是一种制作网页的新技术。
HTML文件就只包括资料,而CSS则是告诉浏览器这些资料应该要如何显现出来。
打个比方,HTML是房子的框架,而CSS就是室内室外的装潢。css让网页变得好看。
Javascript
用JavaScript可以做很多事情,使网页更具交互性,给站点的用户提供更好,更令人兴奋的体验。
JavaScript使你可以创建活跃的用户界面,当用户在页面间导航时向他们反馈。
使用JavaScript来确保用户以表单形式输入有效的信息,这可以节省你的业务时间和开支。
使用JavaScript,根据用户的操作可以创建定制的HTML页面。
JavaScript还可以处理表单,设置cookie,即时构建HTML页面以及创建基于Web的应用程序。
JavaScript 使网页增加互动性。JavaScript 使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,

标签用于为用户输入创建 HTML 表单。 表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。 表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。 表单用于向服务器传输数据。 name:只是给该表单命名,用于js技术使用。 action:设定表单数据提交给哪个文件,用于后端技术(比如php)来接受并处理数据 method: 设定数据提交方式,用于根据不同的数据需求来选择合适的提交(传送)方式 <1>表单标签:指标签本身,使用定义 <2>表单域:是标签中用来收集用户输入的每一项,通常用input标签定义,input标签 有不同类型,对应用户不同的数据 <3>表单按钮:提交表单中所有的信息到服务器 <4>表单元素种类: 单行文本框:,默认值是type=“text” 密码框: 单选按钮: 复选框: 隐藏框: 文件上传: 下拉框:标签 多行文本: 标签: 元素集: 提交按钮: 普通按钮: 重置按钮: document.getElementById("some id")。这个方法是 HTML DOM 中定义的。

后端篇:

2、WEB后端语言有那些,各自的特点分别是什么?

Java
Java是跑在Java虚拟机的面向对象的语言。对于商业网站而言,java是使用最广泛的语言。为什么呢?

java比较成熟:1995年就已出现
很多大学都会教授Java,很多人也因此至少对它一知半解。所以公司寻找Java的开发者也并不困难。尽管那些号称了解Java的人可能都是泛泛之辈。
Java的生态系统非常成熟:
IDE有eclipse、IntelliJIDEA和Netbeans
Jenkins进行持续集成
GlassFish
Apache Ant/Apache Maven 或 Gradle进行自动化构建
JUnit, Mockito是自动化单元测试的利器
log4J和log4J2进行打log
Apache JMeter进行负载测试
Jersey提供RESTful的web服务
Apache Tomcat/WildFly: 应用服务器、web服务器、servlet容器
Grizzly/Jetty: Web服务器
FindBugs,SonarQube 进行代码质量把控与静态代码分析
Hibernate进行ORMapping
像Spring,JSF,JSP,Apache Struts 2,Apache Wicket这类框架。
Java是由Oracle开发的。因此当遇到的问题的时候,可以向他们寻求技术支持。
上述是Java的优点,那么它的缺点呢:

非常笨拙的语法。为了完成一个功能,你可能要打很多字。。当然自动补全是必不可少的,但是要打的东西还是不少。代码越多,维护起来成本越高。
要把一个工具跑起来难度很高
那些被设计用来扩展的super-abstract结构,事实上可能永远不会被用到。
因为没有指针的存在,Java不能访问越界的数组,所以比C/C++安全一些。那些烦恼你的内存溢出也几乎不存在了。但是付出的代价就是,语法更加的复杂,而且你如果一不小心,就会掉入Java中得不安全的陷阱。
速度和内存使用量:Java在速度上并不突出,而在内存使用上则是相当的多。但是这并没给它的大范围使用带来太多的问题。感兴趣的可以看看这篇文章
对于Java还可以参考以下文章:

Java是编译还是解释性的语言? 答案是否定的,但是Java可能不想听到这个结论:)
为什么我听到了这么多关于Java不安全的论点?其他语言更安全么?: 答案也是否定的,想想C/C++吧。
JVM对服务器的安全性
C++ 性能 Vs Java/C#
Javascript: Node.js
Node.js自从2009年发布一下,使用十分广泛。Node.js具有异步,事件驱动以及可扩展的特性。Node.js应用是由JavaScript开发的,因此它具有JavaScript的所有优点:

享受到了JavaScript V8引擎的好处
灵活而轻量级的语法
跟Java一样,JavaScript出现在1995年。所以语言本身发展历史很长,相对稳定。
很多开发者都或多或少的了解一些JavaScript
生态系统很成熟
npm和bower进行包管理
Backbone.js/AngularJS进行MVP/MVC
Unit.js进行单元测试
Grunt进行自动化任务管理
Sequelize进行ORM
Karma进行测试构建
expressjs:web应用框架
很多非常简单的教程
还有什么要补充的?

Node很快,而且可扩展。(参考 Performance Comparison Between Node.js and Java EE)
JavaScript不太安全。即使很小的语法错误也只会在执行的时候暴露出来。因此单元测试十分重要。
Node.js被LinkedIn,Yahoo!, Uber, Paypal使用
有很多人从Node.js转向了Go 1 2 3
参考:

如何决定何时使用Node.js
如何debug Node.js的应用
Node.js教程
Go
Go是由Google开发的,静态类型的编译语言。它直到2009年才出现,十分短暂。

Go提供了那些你进行web开发需要的基本工具
martini/Gin Gonic: 一个web开发框架
mustache 进行模板渲染
gorm: ORM
有不错的教程和一些web开发的材料
有一些任务在Go语言中超过预期的复杂,比如排序,详见link
Go有一些跟其他语言完全不同的diffuser,比如如果你想声明一个public方法,那这个方法的第一个字母一定要是大写的。还有未被使用的变量会导致编译错误。
参考:

Gin Gonic 可能比Martini快40倍, 但却没什么luan用
Go vs Node.js
C
C#是由微软开发的具有静态类型的编译语言。但是它却有很多动态特性。 它出现在2000年。而针对web开发的框架ASP.NET直到2002年才发布。

C#的生态系统包括:

buget
IIS: web服务器
Enity Framework: ORM
LINQ: SQL查询
Visual Studio: IDE
ASP.NET: MVC框架
我对C#/ASP.NET的理解并不深入,因此无法更详尽的分析它的优略。

Python
python是现在在用的最古老的语言之一。它最早出现于1991年。Python是具有动态的类型,面向对象的解释性语言。而且它具有函数编程的特性。

生态系统:
pypi.python和pip: 包托管和包管理
Sphinx: 自动代码文档生成,比如scipy docs就是通过Sphinx生成的。这是我所见过的最好的文档
Django/Flash作为框架
pytest/nose进行测试
gevent: 基于协程的Python网络框架
Tornado: Web服务器
有些使用Python的开发者切换到了Go 1 2
Python有不错的教程和很赞的文档:
Flash
djandobook和docs.djangoproject
fullstackpython
Flask和Django配合Pypy(源码), 性能会更高。
那些使用Python的成熟公司:
Quora(source)
Prezi,Pinterest,Instagram(source)
Bitbucket, The Onionsource
我认为Python最主要的优势在于代码容易撰写,而且可读性很高。我对Python显然是有偏爱的,而且我坚信很多人和我有着同样的观点。

PHP
PHP是动态类型的服务器端语言,它在1995年被推出。

语言的不连续性是PHP很大的一个问题,可以看看这篇文章
生态系统是比较完善的:
PHPCI和cruisecontrol进行持续集成
Zend Framework/Symfony
有类似于CakePHP和Code Igniter这类轻量级框架
Drupal/Joomla/TYP03/WordPress
PHPUnit进行单元测试
Composer进行包管理,packagist来寻找php包
PHP最大的优势是学习门槛低。它基本可以在任何地方被执行,托管和非常简单。Wikipedia使用的就是PHP,所以很明显使用PHP来创建可用的大型网站是可行的。
这里写图片描述

Hack
Hack是由Facebook在2014年开发的编程语言。它是PHP的变体。它与PHP最主要的不同在于:

函数参数和返回值是指定类型的
Hack并不完全支持PHP的一些特性source,比如goto、可变变量、字符串自增,这有时候也挺好的。

Rust
Rust是很安全的语言,但是对于它在生产环境的使用,仍有疑虑。

参考:

arewewebyet
Rust Web Frameworks
其他
Ruby with Rails: 我知道它应用广泛。Ruby的语法与Python类似。

3、前端和后端的联系和区别

一、绪论
1、
前台:呈现给用户的视觉和基本的操作。
后台:用户浏览网页时,我们看不见的后台数据跑动。后台包括前端、后端。
前端:对应我们写的html、css、javascript 等网页语言作用在前端网页。
后端:对应jsp、javaBean、dao层、action层和service层的业务逻辑代码。(包括数据库)
为什么jsp是后端呢?主要是jsp的运行原理是在tomcat服务器运行的。

2、
(1)javaweb是java开发中的一个方向 java有搞安卓的,搞web的,搞嵌入式的等。javaweb就是指搞web方向的,javaweb分两块,一块是服务器端叫后端,另一块叫前端,也就是web前端。前端就是用户能看到的部分,比如淘宝网,qq空间,网页上你能看到的都是web前端做的。后端做的就是为前端的展示业务逻辑功能做处理。
(2)java web包括了jsp,servelt以及一些框架比如spring,structs以及与数据库交互的知识,当然也涉及到了html,css等前端技术,但是更侧重于后端的开发。web前端主要是html,css,javascript之类的技术。
jaweb是javaee的一个方向,Javaweb,由前端、Java代码、和数据库三个大方面组成,前端只是其中之一。
(3)在我们的机子上看到的界面,安装的程序,给用户看的,操作的就是前端;而你看不到的,帮你保存网络游戏数据,保存应用数据,处理数据的就是后端(服务器)。比如说:我们在用的知乎就是前端,而保存这个问题,还有把这个问题推送给你的就是后端。

二、定义不同
一般来说,我们将网站分为前端和后端。前端主要负责页面的展示,后端则是业务逻辑的实现。
1、Web前端:
顾名思义是来做Web的前端的。这里所说的前端泛指Web前端,也就是在Web应用中用户可以看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。
2、Web后端:
后端更多的是与数据库进行交互以处理相应的业务逻辑。需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。

三、需要掌握的技术不同
1、Web前端:
精通JS,能熟练应用JQuery,懂CSS,能熟练运用这些知识,进行交互效果的开发。
(1)精通HTML,能够书写语义合理,结构清晰,易维护的HTML结构;
(2)精通CSS,能够还原视觉设计,并兼容业界承认的主流浏览器;
(3)熟悉JavaScript,了解ECMAScript基础内容,掌握1-2种js框架,如JQuery;
(4)对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案;
(5)对性能有一定的要求,了解yahoo的性能优化建议,并可以在项目中有效实施。

2、Web后端:
后端开发人员:会写Java代码,会写SQL语句,能做简单的数据库设计,会Spring和iBatis,懂一些设计模式等。
(1)精通jsp,servlet,javabean,JMS,EJB,Jdbc,Flex开发,或者对相关的工具、类库以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解;
(2)练使用oracle、sqlserver、mysql等常用的数据库系统,对数据库有较强的设计能力;
(3)熟悉maven项目配置管理工具,熟悉tomcat、jboss等应用服务器,同时对在高并发处理情况下的负载调优有相关经验者优先考虑;
(4)精通面向对象分析和设计技术,包括设计模式、UML建模等;
(5)熟悉网络编程,具有设计和开发对外API接口经验和能力,同时具备跨平台的API规范设计以及API高效调用设计能力。

四、web后端和前端是怎么连接的?
1、web服务器(apache、tomcat等),网络协议(http、socket等),浏览器(chrome、FF、IE等)。浏览器发起建立连接请求,通过网络协议与服务器建立连接,服务器保持连接,获取浏览器想要的数据,服务器通过连接返回内容给浏览器,浏览器把数据呈现出来。
2、连接的协议一般是http,也有websocket。服务器以服务的方式存在,就像外卖店,你打个电话过去,人家就把饭菜送上门来了。
3、web服务器访问数据库一样要使用网络连接,端口只是开放服务的入口而已,就像外卖的电话。

五、JavaWeb与web前端的区别?
1、web前端,主要是给网站做静态页面的,也就是说你平时浏览的网站所看到的页面基本都出自web前端,不过网站版面可以是美工出图。
web前端需要掌握的技术有:DIV+CSS,js,jQuery更高一层的是可以去使用一些框架去网站页面。这样的框架也有很多。如Bootstrap,UIkit,Kube等等。
2、javaweb一般涉及到前端。而web前端开发只是有可能涉及到java。
前端开发一般只涉及到js ,html ,css,有些可能会用flash, photoshop这些。框架就jquery ,ext, jodo等这些。
web前端的话他的后端可能是java,也可能是或者php等都可能,但javaweb可以确定后端就是java,web前端其实都一样。
前端和Javaweb的区别更多的在于一个主要负责前端的设计和效果,而Javaweb更专注于后端的内容。
3、刚开始从事web开发时,首先要选准学习方向,看是想从事前端部分还是后端程序部分。当然在工作的后期,就不会分的那么细致了。做前端到后期也会懂一些后端的技术,反之,后端也是。

Cookie和Session的区别、优缺点

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE
4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
cookie:
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。

session:
session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。

MVC和MVVM的区别:

MVC:一句话描述就是Controller负责将Model的数据用View显示出来,换句话说就是在Controller里面把Model的数据赋值给View,我们所有的App都是界面和数据的交互,所以需要类来进行界面的绘制,于是出现了View,需要类来管理数据于是出现了Model。我们设计的View应该能显示任意的内容比如页面中显示的文字应该是任意的而不只是某个特定Model的内容,所以我们不应该在View的实现中去写和Model相关的任何代码,如果这样做了,那么View的可扩展性就相当低了。而Model只是负责处理数据的,它根本不知道数据到时候会拿去干啥,可能拿去作为算法噼里啪啦去了,可能拿去显示给用户了,它既然无法接收用户的交互,它就不应该去管和视图相关的任何信息,所以Model中不应该写任何View相关代码。然而我们的数据和界面应该同步,也就是一定要有个地方要把Model的数据赋值给View,而Model内部和View的内部都不可能去写这样的代码,所以只能新创造一个类出来了,取名为Controller。
MVVM:一个很重要的操作:数据解析。
如果我们继续按照MVC的设计思路,将数据解析的部分放到了Controller里面,那么Controller就将变得相当臃肿。还有相当重要的一点:Controller被设计出来并不是处理数据解析的。所以为数据解析创建出了一个新的类:ViewModel
在MVVM中,Controller不再像MVC那样直接持有Model了。因为Controller只需要数据解析的结果而不关心过程,所以就相当于VM把“如何解析Model”给封装起来了,C甚至根本就不需要知道M的存在就能把工作做好,前提它需要持有一个VM。那么我们MVVM中的持有关系就是:C持有VM,VM持有M。这里有一个比较争议的地方:C该不该持有M。我的答案是不该。为什么呢,因为C持有M没有任何意义。就算C直接拿到了M的数据,它还是要去让VM进行数据解析,而数据解析就需要M,那么直接让VM持有M而C直接持有VM就足够了。

服务器篇:

需要做的:

1,网络工程师的工作

你至少要能配置CISCO 6509以下的设备,熟悉各种网络协议,否则网络出问题的时候你会傻掉。

2,系统工程师的工作

你至少要理解各种系统服务,在出问题的情况下要迅速解决问题,而不是等系统工程师来解决。

3,安全工程师的工作

我不要求你一定要会各种网络编程,但是在服务器收攻击的情况下,没有防火墙的情况下,做一些简单的处理工作。

4,存储工程师的工作

至少要熟悉各个厂商的设备,各种备份和还原的办法

5,测试工程师的工作

在新版本上线之前,你至少要协同测试工程师做测试工作,因为你是运维人员,不了解程序架构导致无法解决故障,你也有一份责任。

6,研发人员的工作

运维工具都需要自已开发,熟悉开发语言,需要有过实际开发经验,否则工作会非常痛苦,我深有体会。

目录结构:

/bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。
/etc 存放系统管理和配置文件
/home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示

/usr 用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
/usr/x11r6 存放x window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc Linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库
/opt 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里。
/proc 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/root 超级用户(系统管理员)的主目录(特权阶级o)
/sbin 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。
/dev 用于存放设备文件。
/mnt 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。
/boot 存放用于系统引导时使用的各种文件
/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件。
/tmp 用于存放各种临时文件,是公用的临时文件存储点。
/var 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里

Linux运维最常用命令汇总

线上查询及帮助命令
man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。(man手册)
help 查看Linux内置命令的帮助,比如cd命令。
文件和目录操作命令
ls 全拼list,功能是列出目录的内容及其内容属性信息。
cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录。
cp 全拼copy,其功能为复制文件或目录。
find 查找的意思,用于查找目录及目录下的文件。
mkdir 全拼make directories,其功能是创建目录。
mv 全拼move,其功能是移动或重命名文件。
pwd 全拼print working directory,其功能是显示当前工作目录的绝对路径。
rename 用于重命名文件。
rm 全拼remove,其功能是删除一个或多个文件或目录。
rmdir 全拼remove empty directories,功能是删除空目录。
touch 创建新的空文件,改变已有文件的时间戳属性。
tree 功能是以树形结构显示目录下的内容。
basename 显示文件名或目录名。
dirname 显示文件或目录路径。
chattr 改变文件的扩展属性。
file 显示文件的类型。
md5sum 计算和校验文件的MD5值。
查看文件及内容处理命令
cat 全拼concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。
tac tac是cat的反向拼写,因此命令的功能为反向显示文件内容。
more 分页显示文件内容。
less 分页显示文件内容,more命令的相反用法。
head 显示文件内容的头部。
tail 显示文件内容的尾部。
cut 将文件的每一行按指定分隔符分割并输出。
split 分割文件为不同的小片段。
paste 按行合并文件内容。
sort 对文件的文本内容排序.
uniq 去除重复行
wc 统计文件的行数、单词数或字节数。
iconv 转换文件的编码格式。
dos2unix 将DOS格式文件转换成UNIX格式。
diff 全拼difference,比较文件的差异,常用于文本文件。
vimdiff 命令行可视化文件比较工具,常用于文本文件。
rev 反向输出文件内容。
grep/egrep 过滤字符串
join 按两个文件的相同字段合并
tr 替换或删除字符
vi/vim 命令行文本编辑器
文件压缩及解压缩命令
tar 打包压缩
unzip 解压格式为zip的压缩文件
gzip gzip格式压缩工具
zip zip格式压缩工具
bzip2 bzip2格式压缩工具
信息显示命令
uname 显示操作系统相关信息的命令
hostname 显示或者设置当前系统的主机名。
dmesg 显示开机信息,用于诊断系统故障。
uptime 显示系统运行时间及负载。
stat 显示文件或文件系统的状态。
du 计算磁盘空间使用情况。
df 报告文件系统磁盘空间的使用情况。
top 实时显示系统资源使用情况。
free 查看系统内存。
date 显示与设置系统时间。
cal 查看日历等时间信息。
搜索文件命令
which 查找二进制命令,按环境变量PATH路径查找。
find 从磁盘遍历查找文件或目录。
whereis 查找二进制命令,按环境变量PATH路径查找。
用户管理命令
useradd 添加用户。
usermod 修改系统已经存在的用户属性。
userdel 删除用户。
groupadd 添加用户组。
passwd 修改用户密码。
chage 修改用户密码有效期限。
id 查看用户的uid,gid及归属的用户组。
su 查看用户的uid,gid及归属的用户组。
visudo 编辑/etc/sudoers文件的专属命令。
sudo 以另外一个用户身份(默认root用户)执行事先在sudoers文件允许的命令。
基础网络操作命令
telnet 使用TELNET协议远程登录。
ssh 使用SSH加密协议远程登录。
scp 全拼secure copy,用于不同主机之间复制文件。
wget 命令行下载文件。
ping 测试主机之间网络的连通性。
route 显示和设置linux系统的路由表。
ifconfig 查看、配置、启用或禁用网络接口的命令。
ifup 启动网卡。
ifdown 关闭网卡。
netstat 查看网络状态。
ss 查看网络状态。
深入网络操作命令
nmap 网络扫描命令。
lsof 全名list open files,也就是列举系统中已经被打开的文件。
mail 发送和接收邮件。
mutt 邮件管理命令
nslookup 交互式查询互联网DNS服务器的命令。
dig 查找DNS解析过程。
host 查询DNS的命令
traceroute 追踪数据传输路由状况。
tcpdump 命令行的抓包工具。
有关磁盘与文件系统的命令
mount 挂载文件系统。
umount 卸载文件系统。
fsck 检查并修复Linux文件系统。
dd 转换或复制文件。
dumpe2fs 导出ext2/ext3/ext4文件系统信息。
dump ext2/3/4文件系统备份工具。
fdisk 磁盘分区命令,适用于2TB以下磁盘分区。
parted 磁盘分区命令,没有磁盘大小限制,常用于2TB以下磁盘分区。
mkfs 格式化创建Linux文件系统。
partprobe 更新内核的硬盘分区表信息。
e2fsck 检查ext2/ext3/ext4类型文件系统。
mkswap 创建Linux交换分区。
swapon 启用交换分区。
swapoff 关闭交换分区。
sync 将内存缓冲区内的数据写入磁盘。
resize2fs 调整ext2/ext3/ext4文件系统大小。
xfs_growfs 调整xfs文件系统大小
系统权限及用户授权相关命令
chmod 改变文件或目录权限。
chown 改变文件或目录的属主和属组。
chgrp 更改文件用户组。
umask 显示或设置权限掩码。
setfacl 改变某个用户对某个文件或目录的权限
查看系统用户登陆信息的命令
whoami 显示当前有效的用户名称,相当于执行id -un命令。
who 显示目前登录系统的用户信息。
w 显示已经登陆系统的用户列表,并显示用户正在执行的指令。
last 显示登入系统的用户。
lastlog 显示系统中所有用户最近一次登录信息。
users 显示当前登录系统的所有用户的用户列表。
finger 查找并显示用户信息。
内置命令及其它
echo 打印变量,或直接输出指定的字符串
printf 将结果格式化输出到标准输出。
rpm 管理rpm包的命令
yum 自动化简单化地管理rpm包的命令。
watch 周期性的执行给定的命令,并将命令的输出以全屏方式显示。
alias 设置系统别名
unalias 取消系统别名
date 查看或设置系统时间。
clear 清除屏幕,简称清屏。
history 查看命令执行的历史纪录。
eject 弹出光驱。
time 计算命令执行时间。
nc 功能强大的网络工具。
xargs 将标准输入转换成命令行参数。
exec 调用并执行指令的命令。
export 设置或者显示环境变量。
unset 删除变量或函数。
type 用于判断另外一个命令是否是内置命令。
bc 命令行科学计算器
系统管理与性能监视命令
chkconfig centos6.x版本管理Linux系统开机启动项
systemctl centos7.x版本管理linux系统服务
vmstat 虚拟内存统计
mpstat 显示各个可用CPU的状态统计。
iostat 统计系统IO。
sar 全面地获取系统的CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU中断和网络等性能数据。
ipcs 用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。
ipcrm 用来删除一个或更多的消息队列、信号量集或者共享内存标识。
strace 用于诊断、调试Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。
ltrace 命令会跟踪进程的库函数调用,它会显现出哪个库函数被调用。
关机/重启/注销和查看系统信息的命令
shutdown 关机
init 0 关机
poweroff 关闭电源
logout 退出当前登录的Shell。
exit 退出当前登录的Shell。
Ctrl+d 退出当前登录的Shell的快捷键。
进程管理相关命令
bg 将一个在后台暂停的命令,变成继续执行 (在后台执行)。
fg 将后台中的命令调至前台继续运行。
jobs 查看当前有多少在后台运行的命令。
kill 终止进程。
killall 通过进程名终止进程.
pkill 通过进程名终止进程.
crontab 定时任务命令。
ps 显示进程的快照。
pstree 树形显示进程。
nice/renice 调整程序运行的优先级。
nohup 忽略挂起信号运行指定的命令。
pgrep 查找匹配条件的进程。
runlevel 查看系统当前运行级别。
init 切换运行级别。0、1、2、3、4、5、6
service 启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

更多推荐

关于前端、后端以及服务器的前段时间的入门了解