服务器搭建-Linux基础知识

服务器搭建还是需要一些Linux知识的,这节就聊点基础的。

文件权限操作

查看权限

Linux中每个文件对每个用户来说都有对应的权限,在任一路径中输入ll就可以查看这些信息:

root@ip-*** /usr/local # ll
total 32K
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 bin
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 etc
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 games
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 include
drwxr-xr-x 4 root root 4.0K Jan 14 17:08 lib
lrwxrwxrwx 1 root root    9 Jan 14 17:00 man -> share/man
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 sbin
drwxr-xr-x 7 root root 4.0K May 27 14:02 share
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 src

关于权限方面我们主要关注第1、3、4列
我们先来看第一列,第一列表示各用户对该文件/目录的操作权限,我把它断成四个部分,d|rwx|r-x|r-x分别表示类型|文件所有者权限|文件所属用户组权限|其他人的权限。类型我们经常用到的有d-目录--文件l-连接文件r(4)|w(2)|x(1)分别对应读|写|可执行(进入目录)
第三列和第四列分别代表文件所有者和文件所属用户组。

改变权限属性

改变文件权限需要用到chmod命令,上面我在rwx中标注了4、2、1,代表的就是它们的对应值,需要哪些权限把它们相加就是了,来个示例:

root@ip-*** ~ # ll  
total 4.0K
-rw-r--r-- 1 root root 25 Jun  8 02:33 dev.js

计算一下得到文件dev.js对各用户的权限值是644,下面使用chmod命令改变一下:

root@ip-*** ~ # chmod 761 dev.js 
root@ip-*** ~ # ll
total 4.0K
-rwxrw---x 1 root root 25 Jun  8 02:33 dev.js

这里分别赋予文件所有者|文件所属用户组|其他用户的权限是可读可写可执行|可读可写|可执行


另外,除了更改文件权限之外,还可以更改文件所有者和所在用户组,分别用到的命令是chownchgrp,具体使用方式可以使用man命令查看。

磁盘

一般在我们购买服务器的时候我们都会选择安装好一个Linux系统,分区啥的都已经配置好了,这方面对入门同学来讲并不需要掌握太多,主要注重查看。
查看磁盘使用df命令,加上参数-h使用以人类易读的方式展示。

压缩与打包

Linux中有很多软件是下载一个压缩包让用户自己解压安装的,这就需要我们掌握必要的压缩技能。使用比较广泛的有gzipbzip2tar

gzip、zcat

gzip应该说是目前Linux系统中使用最广的压缩命令了。它可以解开*.z*.zip*.gz等格式的压缩文件,下面来看它的使用方式:

root@ip-*** ~ # gzip -v dev.js 
dev.js:     -8.0% -- replaced with dev.js.gz
root@ip-*** ~ # ls
dev.js.gz

这里的-v是为了在压缩结束后查看压缩比,当然还有其他参数:

-c 将压缩的数据输出
-d 解压缩
-t 校验压缩文件
-1~-9 设置压缩级别,-1最快,压缩效果也最差,-9最慢,压缩效果最好,默认-6,一般情况下使用默认的就可以了。

so,当我们需要解压缩文件的时候只要加上-d参数就可以了。
我们知道cat命令可以用来查看纯文本文件,那zcat就是用来查看纯文本被压缩后的压缩文件。
另外,需要注意的一点是使用gzip压缩后源文件就会被自动删除。

bzip2、bzcat

bzip2是比gzip更优秀的压缩工具,用法跟gzip非常近似:

-c 将压缩的数据输出
-d 解压缩
-k 保留原文件
-z 压缩参数
-t 校验压缩文件
-1~-9 设置压缩级别,-1最快,压缩效果也最差,-9最慢,压缩效果最好。

其压缩文件以*.bz2格式存在,bzcat的作用与zcat相似,不再赘述。

tar

上面我们讲到了压缩命令,但是这里的压缩都是单文件的,要是我想把多个文件压缩在同一个压缩包中光用上面的命令是做不到的,有的同学会说我们可以压缩一个文件夹啊,想法很好,但是不好意思,你这么做的话会类似这样的提示:* is a directory -- ignored。所以这里我们要用到另一个工具tar,把那些文件打包成一个文件合集再使用压缩工具进行压缩。
值得一提的是,tar还可以同时在参数中直接使用gzip/bzip2tar的命令非常多,介绍几个常用的:

-c 新建打包文件
-j/-z 使用bzip2/gzip压缩,打包文件名通常应该是*.tar.bz2/*.tar.gz
-t 查看打包文件内容,主要用来查看文件名
-x 解压缩,通常搭配 -C 用于解压到目标目录
-v 查看压缩/解压过程中,正在被处理的文件
-C 解压到指定目录,与 -x 一起使用
-f 后面接被处理的文件名

下面是几个常用的组合,一般情况下足以应付大部分使用场景了。

压缩(bzip2):tar -jcv -f target.tar.bz2 待压缩的目录
压缩(gzip):tar -zcv -f target.tar.gz 待压缩的目录
查看包含文件(bzip2):tar -jt -f target.tar.gz/target.tar.bz2
查看包含文件(gzip):tar -zt -f target.tar.gz/target.tar.gz
解压(bzip2):tar -jxv -f target.tar.bz2 -C 解压到某处
解压(gzip):tar -zxv -f target.tar.gz -C 解压到某处

来个实例:

root@ip-*** ~ # ls -a
.                        .config     .zcompdump-ip-172-31-17-254-5.0.2
..                       .oh-my-zsh  .zsh-update
.aptitude                .profile    .zsh_history
.bash_history            .ssh        .zshrc
.bashrc                  .viminfo    dev.js
.cloud-locale-test.skip  .zcompdump  testroot@ip-*** ~ # tar -jcv -f test.tar.bz2 .
...
./.oh-my-zsh/lib/completion.zsh
./.oh-my-zsh/lib/diagnostics.zsh
./.profile
./.zsh_history
./.cloud-locale-test.skip
./.bashrcroot@ip-*** ~ # ls -a
.                        .oh-my-zsh                         .zsh_history
..                       .profile                           .zshrc
.aptitude                .ssh                               dev.js
.bash_history            .viminfo                           test
.bashrc                  .zcompdump                         test.tar.bz2
.cloud-locale-test.skip  .zcompdump-ip-172-31-17-254-5.0.2
.config                  .zsh-update

打包压缩成功后,可以看到最后多了一个test.tar.bz2文件。另外,另外两组组合可以自己尝试一下,另外,解压强烈建议加上-C命令,以免覆盖原来的文件。

shell脚本

shell脚本是能够在shell环境中执行的程序,它遵从shell语法,有了它,我们可以为一些需要重复操作的系列连续性命令做一个合集,解放劳动力。
下面我先给个常用的git案例:

#!/bin/bash    //声明使用的shell环境
action="none"    //变量赋值
echo "1: commit to dev and update test"    //打印字符串
echo "2: merge branch to master"
read -p "please input number to select next step: " -t 30 action    //读取用户键盘输入并赋给 action 变量,30秒内无输入则跳过case $action in    //case语句,判断条件为 action 变量
1)read -p "please input commit content: " -t 30 commitif [ "$commit" == "" ]; then    //if判断语法commit="default commit"    //条件符合执行的操作fi    //if判断语句结束git add .git commit -m "$commit"    //引用变量git push origin devexit 0    //退出shell;;    //满足 action 为1的条件的语句结束
2)echo "1: cyc"echo "2: bingqichen"echo "3: dev"branch[1]="cyc"    //数组赋值branch[2]="bingqichen"branch[3]="dev"read -p "please input number to select the branch: " -t 30 branch_noif [ "$branch_no" == "1" ] || [ "$branch_no" == "2" ] || [ "$branch_no" == "3" ]; then    //if条件判断,|| 表示或关系git checkout mastergit merge "${branch[$branch_no]}"    //${branch[1]}为数组的引值方法git push origin mastergit checkout -else    //另外还有 elif ,跟js中的 else if 类似,可以继续添加判断条件echo "sorry, this is an undefined branch!"fiexit 0;;
*)    //action为其他值的操作echo "sorry, this is an undefined action!"exit 0;;
esac    //case语句结束

这段脚本就是我用来解决git提交和代码合并的问题,大家可以根据自己的使用场景改造。大部分语句还是很简单的,主要有几个需要注意的点,比如条件判断语句:

[ "$branch_no" == "1" ]

这里面的每个空格都不可以省略!还有赋值语句不能加空格,慎用单引号等等。

编译安装

Linux中安装软件的方法主要分为使用包管理器安装,和下载源代码自行编译安装,前者相对简单,但是有可能有些最新的软件包未必会有,比如PHP7,这时候就需要我们下载软件源码编译成二进制文件才能使用。
先来看看编译过程:
编译过程
大致过程是这样的,当我们下载到软件源码后,一般会是一个压缩包,解压之后里面会有一个用于建立Makefile文件的config/configure文件,使用config/configure建立Makefile后,执行make命令将源代码根据Makefile文件的配置进行编译,最后执行make install命令,将编译好的内容依据Makefileinstall选项安装到指定位置完成安装。
这里讲讲为什么要根据Makefile进行编译,其实GCC可以直接编译程序文件,但是一个软件不可能只拥有一个程序文件,要是人工一个个去编译每个文件,会非常劳民伤财!所以借助一个Makefile我们就可以搞定了。
下面来演示一个PHP7的编译安装:

root@ip-*** ~ # wget http://cn2.php.net/get/php-7.0.0.tar.gz/from/this/mirror    //下载源码
root@ip-*** ~ # ls
mirror
root@ip-*** ~ # mv mirror php.tar.gz    //重命名
root@ip-*** ~ # tar -zxv -f php.tar.gz    //解压缩源码包
root@ip-*** ~ # ls 
php-7.0.0  php.tar.gz
root@ip-*** ~ # cd php-7.0.0    //进入源文件目录
root@ip-*** ~/php-7.0.0 # ls    //里面会有一些手册,可以用来做安装参考
INSTALL            README.md            configure
...
root@ip-*** ~/php-7.0.0 # ./configure    //执行configure建立Makefile
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
...
checking for xml2-config path... 
configure: error: xml2-config not found. Please check your libxml2 installation.

我在编译到这一步报了一个错误,看起来是由于libxml2未安装,在我尝试安装后发现已经存在这个软件,在网上搜寻一片后发现还要安装libxml2-dev,这个我不是很懂。。。再次执行./configure成功并自动建立了Makefile文件,继续:

root@ip-*** ~/php-7.0.0 # make    //这个步骤视软件大小和硬件性能执行时间会有差异
/bin/bash /root/php-7.0.0/libtool --silent --preserve-dup-deps --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/root/php-7.0.0/ext/opcache/ -DPHP_ATOM_INC -I/root/php-7.0.0/include -I/root/php-7.0.0/main -I/root/php-7.0.0 -I/root/php-7.0.0/ext/date/lib -I/usr/include/libxml2 -I/root/php-7.0.0/ext/sqlite3/libsqlite -I/root/php-7.0.0/TSRM -I/root/php-7.0.0/Zend    -I/usr/include -g -O2 -fvisibility=hidden    -c /root/php-7.0.0/ext/opcache/ZendAccelerator.c -o ext/opcache/ZendAccelerator.lo
...
Build complete.
Don't forget to run 'make test'.

编译结束时,应该能看到上面的提示,make test是非必要的,自行选择,另外要注意的一点,如果你是二次编译的话需要先清理之前的编译出来的文件,即在make之前执行一下make clean
到这里我们只要再执行一下make install就可以安装结束了。
这只是最基础的安装,我在这过程中省略了很多配置项,这样安装出来的软件是很“简陋”的,事实上在执行./configure操作时,有很多可选项供我们配置,但是不同软件可以添加的参数是不一样的,怎么看当前的软件可以添加哪些参数呢?在软件源码目录执行./configure --help就可以了:

root@ip-*** ~/php-7.0.0 # ./configure --help
...
Installation directories:--prefix=PREFIX         install architecture-independent files in PREFIX[/usr/local]
...
SAPI modules:--enable-fpm            Enable building of the fpm SAPI executable
...

这里只列举了两个,一个是目标安装目录,一个是启用fpm,这些选项可以根据需要自行添加。
其实,很多软件通过添加软件源的方式还是可以用包管理器安装的,上面说的PHP7就是这样,不要打我???

其他资料

包管理器

Linux的包管理器有很多种,Cent OS有yum,Ubuntu有apt,还有别的像aptitude之类的,这里有一篇很好的文章供参考点我查看

oh-my-zsh

zsh也是一个非常强大的shell环境,可以用它来代替Linux系统原有的bash,这是一组zsh的配置,它可以让zsh更加好用,感兴趣的可以看我的另一篇文章oh-my-zsh小记

htop

这是一个运行在终端的用于查看系统资源使用情况和管理进程的图形化工具,使用yum或者apt-get等安装即可,完成后直接输入htop就可以使用了,比原生的top更强大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

seo从入门到精通_从入门到精通,新人必看的3本书SEO书籍

SEO入门书本引荐:从入门到通晓,新人必看的3本书在这个网上学习泛滥的年代,很多人都习气在网络上找教程学习,无论上视频教程,学习论坛,或是网上课堂等等。但也有些人仍是更习气看书学习的,很多人…

Hession矩阵与牛顿迭代法

1、求解方程。 并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。 原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) f(x0)(x-x0)f(x0) 求解方程f…

抽象工厂模式_设计模式——抽象工厂模式

阅读目录使用频率:★★★★★一、什么是抽象工厂模式二、补充说明三、角色四、例子使用频率:★★★★★一、什么是抽象工厂模式就是对一组具有相同主题的工厂进行封装(维基百科解释的很到位);例如:生产一台PC机,使用工…

windows(win7,win8,xp)hosts文件找不到原因分析及解决方法

2019独角兽企业重金招聘Python工程师标准>>> 一般情况hosts文件是保存在C:\windows\System32\Drivers\Etc 文件夹上,由于安装是win7系统,在这个路径上就能找到这个hosts文件。如果你在该路径下没有找到这个文件的话,一般是以下几种…

sql 显示百分比_轻松搞定数据分析之SQL——简单查询

每天早起或者睡前听一首温柔而美好的音乐,是一件很幸福的事情,无论你是否懂音乐,它都能带你发现生活中的隐藏的那些美好,今天我们先来一起欣赏Mindy Gledhill的单曲《California》California (网易云音乐),每次我听到这首歌&#…

SpringMVC 中设置日期字符串转换格式

2019独角兽企业重金招聘Python工程师标准>>> 在使用SpringMVC的项目中经常遇到 controller 参数中接收Date类型的数据,但是页面传过来的参数又是日期字符串,会出现转换异常。 由于项目需要支持两种日期格式所以从写了一个日期转换器。网友可以…

操作系统 非连续分配_操作系统中的连续和非连续内存分配

操作系统 非连续分配In this article, we will learn about the different types of memory management techniques and also the pros and cons of different memory management techniques. 在本文中,我们将学习不同类型的内存管理技术 ,以及不同内存管…

文件名重定向到txt中Linux,Linux上glob用于实现文件名的通配、IO重定向及管道

Linux中所谓的通配是指,显示以指定条件为条件的文件;即通配的含义是指搜寻以已知条件为前提的目标文件。常用文件通配符有:文件通配符含义例子*任意长度的任意字符如a*,搜寻所有以a为首的文件名的文件?任意的单一字符如a&#xff…

分形与数据结构第二篇

一、分形之 迭代实现分形 本次的图形都是在之前的画图工具中实现的。 首先,还是和原来一样建立一个JButton元素组件,然后加上监听方法;再在public void mouseClicked(MouseEvent e) {}方法中实现图形; else if (s.equals("图…

华为linux版笔记本安装win7,华为MateBook X Pro笔记本怎样安装win7系统

华为MateBook X Pro的制造工艺达到了业界顶级的水准,高达91%的屏占比真正达到了近似全面屏的观感,触感顺滑质感强烈的机身让人爱不释手。对于有意选购一台高端轻薄本产品的消费者来说,MateBook X Pro应该是你首选的对象之一。那么这款笔记本怎…

怎么使用小爱同学音响_智能音响购买指南!!!

小度音响pro100天使用感受,100天前我冲动消费购买了一个智能音响,还是对比了多个智能音响做好的决定。使用到现在显然这个冲动消费是非常划算的,这个智能音响完全提升了我的生活质量,我现在一下班就会让它播放音乐、睡觉前播放几段…

【分享】WeX5的正确打开方式(1)

最近在研究WeX5,想在这里记录下使用过程中的点滴,今天先把之前已经掌握的分享一下。WeX5官方的开发指南难度系数较大,面向的受众可能是已经敲过上万行代码的html5 app开发者。但是作为一个刚进入代码世界的html5 app开发宝宝,本人…

过滤器,绑定事件,动画

一、基本过滤器 语法描述返回值:first选取第一个元素单个元素:last选取最后一个元素单个元素:not(selector)选取去除所有与给定选择器匹配的元素集合元素:even选取索引是偶数的所有元素(index 从0开始)集合元素:odd选取索引是奇数的所有元素(index 从0开始)单个元素:eq(index)选…

python操作mysql数据库的常用方法使用详解

python操作mysql数据库1、环境准备: Linux安装mysql: apt-get install mysql-server安装python-mysql模块:apt-get install python-mysqldb Windows下载安装mysqlpython操作mysql模块:MySQL-python-1.2.3.win32-py2.7.exe 或 MySQ…

c语言稀疏矩阵的存储,C语言:数据结构-稀疏矩阵的压缩存储

https://m.toutiaocdn.com/group/6712258385510662667/?appnews_article&timestamp1562855219&req_id201907112226580100230300187166DEA&group_id6712258385510662667(1)稀疏矩阵的特点在一个mn的矩阵中,设矩阵中有i个元素不为零,并令△i/…

计算机C语言课交作业怎么交,第一份c语言作业

2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样?•答案: 软件工程专业是个年轻的专业,紧跟这个信息化的新时代。我学习它是因为感兴趣,经过一周的学习,我了解了一些 该专业课程主要是c语言程序设计和计算机导…

技术淘宝

? ? ? ? 精度前端学习 —— 前端开发100天(置顶) http://alloyteam.github.io/CodeGuide/https://github.com/AlloyTeam/CodeGuide cmd控制台的小技巧:可以直接将文件夹/文件丢进去,这样就会打印出该路径了。 舒服的字体家族…

vue 导出_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入

问题:vuex在vue-cli中的应用第一步:npm下载vuex资源包:npm install vuex --save第二步:在 src/main.js 中引入import Vue from vue import Vuex from vuexVue.use(Vuex)import store from ./vuex/store第三步:在 src 下…

android界面设计字体大小,Andoird用户界面设计上手指南:设置字体大小

教程详解技术应用: AndroidOS / Android SDK难易程度: 简单预计完成时间: 15分钟【51CTO译文】在本文中,我们将介绍一些简单的处理方式,帮助开发人员轻松编写出能够应对各类设备型号的应用程序文本方案,同时为用户提供自定义文字尺寸功能。别…

回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

回溯算法解决八皇后4-皇后问题 (4 - Queens problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 chessboard, satisfying the constraint that no two queens should be in the same row, same column, or in same diagonal. 在4个皇后问题中 &#xff0c…