
1、先了解了解基础吧,找一本薄一点的,浅一点的书,了解一下什么是linux。有个基本了解即可。不建议马上看《鸟哥的Linux私房菜》,这本书很不错,如果你了解linux基础之后再看,对你可以说是不受益匪浅都不行。没基础看《鸟哥的Linux私房菜》比较痛苦,内容很多。
2、了解之后,在自己电脑上弄个虚拟机,装上linux系统(redhat或ubuntu都行)。专攻《鸟哥的Linux私房菜》。当你把这本书攻下来时,才知道原来命令行并不可怕,自己打着打着就很长啦。
学linux最主要靠实践,不实践,只看书对你没好处的哦。自己在虚拟机上慢慢玩吧,玩多了就知道咋回事啦。不懂的多找资料弄懂,弄懂之后再实践,这才会有收获。
Linux命令分为内部命令(shell自带的命令)和外部命令(不是shell自带的命令,由用户安装),怎么鉴别是内部命令和外部命令呢?可以通过type命令来鉴别什么是shell呢?shell是一个程序,常用的有bash shell,平时我们通过用户名和密码登录到linux,其实就是登录到bash shell程序,通过bash shell来 *** 作linux内核
命令执行流程
那岂不是说使用外部命令效率会很慢吗?
其实一点都不慢,它会去PATH环境变量设置的一堆目录中查找
cd is a shell builtin 表示内部命令
ifconfig is hashed (/usr/sbin/ifconfig) 表示外部命令
cd命令切换文件夹
现在我们cd /usr/sbin
通过cat命令查看文件内容
通过cat ifconfig来查看ifconfig,发现是乱码文件
file命令查看文件类型
输入file ifconfig
从输出信息可以看出它是一个二进制可执行文件
whereis命令查看文件位置
find / -name jdk
echo命令用户打印信息,相当于java中的system.out.println
可以使用回车查看下一行、空格查看下一页、q退出
一般使用man查看外部命令,help查看内部命令
查看linux下的应用和应用的进程号
当我们在这个窗口中输入kill -9 1593的话,另外一个正在编辑文件的进程就会退出
在前面我们已经讲过,bash shell程序在执行命令的一个过程及原理,对于外部命令,它会去PATH这个环境变量中查找执行命令所在的路径,当然在去PATH中寻找之前会先去hash表中查找这个命令有没有执行过,执行过的话会记录在hash表中,则此次查找只需从hash表中就可以很方便的找到
查看分区信息 -h 表示文件大小后面会显示文件大小
查看文件的使用情况
使用man ls 查看ls命令的相关介绍
-a:可以查看隐藏文件
-l:以长列表的形式展示文件列表信息
第一位 -:表示文件,d表示文件夹,b表示块设备文件,c表示字符设备文件,p表示命令管道文件,s表示套接字文件, 从第二位开始往后数九位表示属主权限(每三位一组 rwx:读、写、执行),第11位表示的点表示分隔符,点后面的数字表示文件有几个硬连接,第一个root代表属主名,第二个root代表这个第一个root所在的组织,接下来的5表示文件大小,5后面的日期表示文件最后一次修改的时间, 1.txt代表的文件或文件夹的名称
小结:
切换文件目录
cd 文件路径
cd:切换到家目录
cd ~:回到家目录(也就是家目录)
cd ..:回到上一级目录
创建目录
mkdir 目录名
mkdir -p 目录名,级联创建目录
cp 被拷贝的文件(可以是路径加文件名) 拷贝到哪个位置
复制目录使用
cp -r 被拷贝的目录 目标位置
移动命令
mv 被移动的文件 目标位置+目标文件名
rm 文件名(此中方式的删除需要再输入 yes)
rm -f 文件名,无提示直接删除
rm -rf 文件夹
ln命令默认创建的是硬连接
ln profile a:将a硬连接到profile文件上,他们底层共用一个文件,删除他们之中任何一个
对另外一个没有影响,同时你也可以使用 ll -i命令查看文件编号
ln -s profile a:将a软连接到profile文件,当你访问a的时候会去访问profile,profile再访问底层文件,当将profile删除了之后a就无法访问了
一致时间、创建新文本
touch 已存在的文件:会将文件的访问时间、更新时间、改变时间(即上面stat中介绍的三个时间)变成一致
touch 不存在的文件:会创建一个新的文本
cat命令查看文件内容
cat 1.txt:查看单个文件内容
cat 1.txt 2.txt:查看多个文件
more 1.txt:以分页的形式查看文件内容,按空格:下一页,回车:下一行(注意它不能回看,回看的话只能用鼠标回轮)
less 1.txt:使用空格下一页, b看上一页, 回车看下一行
注意less的话会把整个文件内容加载到内存,如果文件比较大的话,建议使用more命令查看
head命令默认查看文件前10行内容, head 1.txt
head -5 1.txt:查看文件前5行的内容
tail命令默认查看文件后10行的内容 tail 1.txt
tail -5 1.txt:查看文件后5行内容
tail -f 1.txt:实时查看文件增量内容
cat b.txt | head -3:管道左边的命令会以输出流的形式交给管道右边的命令,管道右边以输入流的形式接收并且拼到命令的右边
注意:ls -l 不能接受前面的输出流,这个怎么办呢?可以通过xargs命令
vi文本编辑器末行模式的 *** 作
set nu(number的缩写): 设置行号
set nonu(nonumber的缩写):取消行号
set readonly:设置为只读
n:往下查找
N:往上查找
n:往上查找
N:往下查找
一般我们会在/etc/profile文件中设置一些环境变量,但是在设置的时候可能没有记住目录,这时候我们可以使用如下方式
效果
格式 :s/str1/str2/gi
/ : 临近s命令的第一个字符边界字符,也可以是 @或#
g : 一行内全部替换
i : 忽略大小写
范围
n:行号
. :当前光标行
+n :偏移n行
-3
%:全文
全部删除 1,$d
删除前三行
删除倒数第2行
光标挪到最后一行 按下小写的p
效果图
正则表达式是对字符串 *** 作的一种逻辑公式,就是用事先定义好的一些特殊字符、及这些特定字符的组合组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。
\ :转义字符
. :匹配任意单个字符
[1249a] :匹配中括号中任意字符
[^12] :匹配中括号中任意非1和2的字符
[a-k] :匹配中括号中任意a~k中的一个字符
^ :行首
$ :行尾
<abc>:单词首尾边界(匹配单词abc)
| :连接 *** 作符
(,) : 选择 *** 作符
\n :反向引用
? :匹配0到1次
在Linux中通过grep命令使用正则表达式来匹配信息
f :选择显示的列
s :不显示没有分隔符的行
d :自定义分隔符
n :按数值排序
r :倒序
t :自定义分隔符
K :选择排序列
u :合并相同行
f :忽略大小写
sed:行编辑器,以行为单位进行处理,可以将数据进行替换、删除、新增、选取等特定工作
sed [options] 'Command' file ...
-n :静默模式,不再默认显示模式空间(内存)中的内容
-i :直接修改原文件
-e SCRIPT :可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT
-r :表示使用扩展正则表达式
d :删除符合条件的行
p :显示符号条件的行
a \string :在指定的行后面追加新行,内容为string
\n :可以用于换行
i \string :在指定的行前面添加新行,内容为string
c :取代,c的后面可以接字符串
s /pattern/string/修饰符:查找并替换。默认只替换每行中第一次被模式匹配到的字符串
g :行内全局替换
i :忽略字符大小写
s///:s###,s@@@
(),\1,\2
sed "2p" ctxt
但是在执行下面的 *** 作的时候文本中的内容都显示出来了,它的原理是,打印匹配的行,以及文本中所有的内容
注意:它删的是内存中的数据,而不是目标文件
sed -i "3d" ctxt
它的原理是先把内存中的第3行数据删除,然后再把内存中的数据写回原文件,这时原文件中的第三行就没有了
使用变量的形式
awk是一个强大的文本分析工具。
相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk -F '{pattern + action}' {filenames}
支持自定义分隔符,默认是以空格分隔的
支持正则表达式匹配
支持自定义变量,数组 a[1] a[tom] map(key)
支持内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
支持函数
print、split、substr、sub、gsub
支持流程控制语句
if、while、do/while、for、break、continue
练习题
passwd文件内容解读:
passwd文件中每行由7个字段组成,字段与字段之间由:分隔,第一个字段代表用户名,第二个字段表示用户对应的加密后的密码,第三个字段表示userId,第四个字段表示groupId,第五个字段表示对用户的描述,第六个字段表示用户的家目录,第七个字段表示的是这个用户默认使用的shell
其中$0表示整行
统计报表:合计每人1月工资, 0:manager,1:worker
将awk后面的内容封装到一个文件中(封装的脚本要遵循一定的格式)
qqq文件的内容格式
Linux *** 作系统在服务器方面的应用越来越好。下面由我为大家整理了Linux服务器 *** 作系统的简介及版本介绍,希望对大家有帮助!
Linux服务器 *** 作系统简介及版本介绍
一、Linux服务器 *** 作系统简介
Linux服务器 *** 作系统和一般的Linux发行版有什么区别?考虑服务器硬件。服务器本质上是具有专门规格的计算机。例如,服务器硬件确保最大的正常运行时间,效率和安全性。此外,服务器平衡计算能力和功耗。类似地,Linux服务器 *** 作系统优先考虑安全性和资源消耗。
Linux服务器 *** 作系统向客户端设备提供内容。因此,服务器 *** 作系统提供了用于简单服务器创建的工具。由于服务器通常以命令行方式进行配置和运行,因此Linux服务器 *** 作系统的图形用户界面(GUI)不重要。
根据IDC,硬件销售数据表明,28%的服务器是基于Linux的。虽然有专用的Linux服务器 *** 作系统,还可以选择滚动安装版本。选择的关键是 *** 作系统应该能提供长期服务(LTS)迭代并支持安装所需的软件。LTS的发行版提供了稳定性和更长的支撑周期。
当选择Linux服务器 *** 作系统时,还要考虑使用用途。比如将Linux计算机用作媒体服务器与设置游戏服务器是不同的。
二、Linux服务器 *** 作系统版本介绍
1. Ubuntu Server
Ubuntu可以说是最知名的Linux *** 作系统。而且社区有大量的Ubuntu衍生产品,它是一个稳定的发行版。Ubuntu及其变体提供了优秀的用户体验。Ubuntu Server有两个版本:LTS和滚动版本。LTS的Ubuntu Server发行版拥有五年的支持周期。虽然非LTS的Ubuntu Server发行版支持周期不是五年,但也提供了九个月的安全和维护更新。
虽然Ubuntu和Ubuntu Server非常相似,但服务器提供了不同的组件。值得注意的是,Ubuntu Server提供了OpenStack Mitaka、Nginx和LXD。这些内容能满足系统管理员的需求。使用Ubuntu Server版,可以启动Web服务器、部署容器等。而且它是即开即用的服务器软件。
虽然Ubuntu LTS不是一个服务器发行版,但它也提供了五年的支持周期。我目前使用Ubuntu 16.04 LTS来运行专用的Plex服务器以及Linux游戏服务器。LTS发行版可以很好地作为Linux服务器 *** 作系统。只需自己安装服务器软件即可。
谁应该使用它:
如果你刚接触Linux或服务器 *** 作系统,Ubuntu是一个优秀的选择。Ubuntu仍然是最流行的Linux发行版之一,而且它对用户友好。因此,Ubuntu Server是一个梦幻般的入门级Linux服务器 *** 作系统。它作为媒体服务器、游戏服务器或电子邮件服务器是一流的选择。更高级的服务器设置也适合Ubuntu服务器,但它绝对是一个基本的服务器和新手用户的选择。
2. openSUSE
SUSE Linux于1993年首次推出。直到2015年,开源版本的openSUSE迁移到SUSE Linux Enterprise(SLE)。提供了两个openSUSE衍生版:Leap和Tumbleweed。Leap具有更长的发布周期,而Tumbleweed则是滚动发布版。Tumbleweed更适合高级用户使用其最新的软件包,比如Linux内核和SAMBA等。Leap版则有更好的稳定性和成熟度。两者都支持更新 *** 作系统。
企业客户不能承受不稳定、不成熟和未经测试的包。一切都必须严格测试,以确保业务不会出现问题,并导致损失。故Leap版可以确保企业客户的需求。
openSUSE算是一个梦幻般的Linux服务器 *** 作系统。openSUSE包含了用于自动测试的openQA,用于在多个平台上进行Linux映像部署的Kiwi,用于Linux配置的YaST以及全面的软件包管理器Open Build Service。早些时期,SUSE并没有像Redhat和Canonical那样提供免费的企业发行版,如CentOS和Ubuntu,直到Leap版的发布。SUSE官方称,Leap是一个替代Ubuntu、CentOS和Debian的生产服务器的优秀选择。以前openSUSE遵循9个月的发布周期,即每9个月发布一个新的主要版本。而Leap则遵循SLE的发布周期。
谁应该使用它:
openSUSE更适合于像系统管理员这样的强大用户。它是一个伟大的Web 服务器、家庭服务器或家庭服务器/ Web服务器组合。系统管理员可以从诸如Kiwi,YaST,OBS和openQA之类的工具中获益。openSUSE的多功能性使其成为最好的Linux服务器 *** 作系统之一。除了稳固的服务器功能外,openSUSE还提供了一个漂亮的桌面环境。
3. Oracle Linux
如果你在考虑Oracle Linux,这很正常。oracle Linux是由数据库巨头Oracle提供的Linux发行版。它有两个内核。其中一个内核特性是红帽兼容内核RHCK(Red Hat Compatible Kernel),即提供了与Red Hat Enterprise Linux(RHEL)发行版相同的内核。Oracle Linux有认证,可以在联想、IBM和HP等大量硬件上工作。Oracle Linux提供了Ksplice特性,增强了内核的安全性。另外还支持Oracle、openstack、Linux容器和Docker。其品牌标识为Oracle企鹅。
Oracle Linux提供了技术支持,但需要付费。除非你在企业环境中运行Oracle Linux,否则不值得这么付出。如果需要构建公有云或私有云,Oracle Linux是一个优秀服务器 *** 作系统选择。
谁应该使用它:
Oracle Linux最适合数据中心或用于创建基于OpenStack的云。而更高级的家庭服务器用户和企业级设置也适合使用Oracle Linux。
4. 容器Linux(前身为CoreOS)
CoreOS于2016年更名为Container Linux。顾名思义,Container Linux是一个用于部署容器的Linux *** 作系统。它聚焦于简化容器的部署。容器Linux是提供了安全的、高可扩展的、支持容器部署的一流 *** 作系统。集群化的部署非常容易,其发行版包含了服务发现的方法。并提供了Kubernetes、docker和rkt的文档和支持。
但是,容器Linux没有提供包管理器。所有应用程序必须在容器中运行,因此容器化是强制必需的。然而,如果你正在使用容器,那么容器Linux是提供了容器及其集群等基础设施最好的Linux服务器。它提供了一个etcd工具,作为守护进程运行于集群中的每个计算机上。当然你也有安装的灵活性。除了内部部署安装外,您还可以在虚拟化介质(如Azure,VMware和Amazon EC2)上运行Container Linux。
谁应该使用它:
容器Linux最适合集群基础设施的服务器或容器化部署。这并不意味着它不是家庭服务器的选择。如果使用来自Plex的官方Docker镜像,Container Linux可以作为基本家庭媒体服务器或者是复杂集群设置的任何服务器。最终,如果你很喜欢容器,那么应该使用Container Linux。
补充:Linux服务器 *** 作系统如何选择
(1)Debian与Ubuntu的选择
Ubuntu是基于Debian所开发,可以简单地认为Ubuntu是Debian的功能加强版。与Debian相比,Ubuntu提供了更人性化系统配置,更强大的系统 *** 作以及比Debian更激进的软件更新。Ubuntu与Debian比较,可以认为Debian更趋向于保守一些,Ubuntu对新手友好度更高,上手更容易。用过Ubuntu的都会体会到它的易用,反之如果用过Ubuntu再换到别的系统,都会觉得不适应,Ubuntu真的很方便。
在此解释下Ubuntu的版本支持时间。Ubuntu普通版本只提供18个月的技术支持,过期则不管。LTS服务器版本提供长达五年的技术支持。Ubuntu 10.10是个普通版,现在已经过了支持周期了。如果你用了,很好,你会发现你安装不了任何软件,10.10的软件已经从Ubuntu软件源中被移除了。
所以建议大家选择12.04 LTS版,提供长达5年的技术支持,可以确保在静候相当长的一段时间内你的服务器可以继续收到系统升级补丁以及可用的软件源。
(2)Red Hat和Centos选择
Red Hat跟Centos就没那么多差别了。
Red Hat是付费 *** 作系统,你可以免费使用,但是如果要使用Red Hat的软件源并且想得到技术支持的话,是要像Windows那样掏钱的,所以大家可以理解为Linux中的Windows。这么做符合开源精神,免费使用,服务收费。
Centos是Red Hat的开源版本。一般在Red Hat更新之后,Centos会把代码中含有Red Hat专利的部分去掉,同时Red Hat中包含的种种服务器设置工具也一起干掉,然后重新编译就是Centos。
从某种意义上说,Centos几乎可以完完全全看成是Red Hat,这两个版本的rpm包都是可以通用的。
那么这样问题就简单了。如果你舍得花钱买技术支持,并且想得到完善的技术服务,请去买Red Hat的授权,你会得到如Windows一般强大的技术支持的。如果你只想用,什么付费技术支持什么专有软件都是浮云,那么用Centos吧。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)