linux服务器基本常识,服务器搭建-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

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

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

磁盘

一般在我们购买服务器的时候我们都会选择安装好一个Linux系统,分区啥的都已经配置好了,这方面对入门同学来讲并不需要掌握太多,主要注重查看。

查看磁盘使用df命令,加上参数-h使用以人类易读的方式展示。

压缩与打包

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

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/bzip2。tar的命令非常多,介绍几个常用的:

-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 test

root@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

./.bashrc

root@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 commit

if [ "$commit" == "" ]; then //if判断语法

commit="default commit" //条件符合执行的操作

fi //if判断语句结束

git add .

git commit -m "$commit" //引用变量

git push origin dev

exit 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_no

if [ "$branch_no" == "1" ] || [ "$branch_no" == "2" ] || [ "$branch_no" == "3" ]; then //if条件判断,|| 表示或关系

git checkout master

git merge "${branch[$branch_no]}" //${branch[1]}为数组的引值方法

git push origin master

git checkout -

else //另外还有 elif ,跟js中的 else if 类似,可以继续添加判断条件

echo "sorry, this is an undefined branch!"

fi

exit 0

;;

*) //action为其他值的操作

echo "sorry, this is an undefined action!"

exit 0

;;

esac //case语句结束

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

[ "$branch_no" == "1" ]

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

编译安装

Linux中安装软件的方法主要分为使用包管理器安装,和下载源代码自行编译安装,前者相对简单,但是有可能有些最新的软件包未必会有,比如PHP7,这时候就需要我们下载软件源码编译成二进制文件才能使用。

先来看看编译过程:

bVybZd

大致过程是这样的,当我们下载到软件源码后,一般会是一个压缩包,解压之后里面会有一个用于建立Makefile文件的config/configure文件,使用config/configure建立Makefile后,执行make命令将源代码根据Makefile文件的配置进行编译,最后执行make install命令,将编译好的内容依据Makefile中install选项安装到指定位置完成安装。

这里讲讲为什么要根据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/368090.shtml

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

相关文章

CSS实现单行与多行文字省略(truncation)

在上一篇文章小div布局之卡片堆叠(card-stacking)中有多行文字溢出省略的效果,这篇文章就对这种效果(包括单行文字溢出省略)的实现做个简单的记录,以防自己忘记。具体来说,就是要实现这种文字排…

logback配置详解和使用

最近知道一种打印日志的新方法,在此做一下学习总结。 转自:行走在云端的愚公 https://www.cnblogs.com/warking/p/5710303.html 一、logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前…

RAID技术超详细讲解

RAID 技术是一种多磁盘技术,面对数据的各方面有着两面性的影响,整体来说优点大于缺点的,下面我将详细介绍一下 RAID ,简称磁盘阵列技术。 一、RAID 概述 1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 “A C…

Java安全教程–创建SSL连接和证书的分步指南

在有关应用JEE安全性的系列文章中,我们为您提供了另一个有关如何在Java EE应用程序中创建SSL连接和创建证书的详细教程。 如我们之前的文章中所述, 安全套接字层(SSL)/传输层安全性(TLS)将启用客户端和Web服…

[转]CSS hack大全详解

转自:CSS hack大全&详解 1、什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准)&#xff0c…

产品经理应该具备的技能(2)如何做一个好的数据产品经理?

一、如何做一个好的数据产品经理? PD(指产品经理,下同)本身就是在做牛做马,关系圈异常复杂。数据PD也不例外。而且打交道的人更多。以下是我用PPT绘制的数据产品经理关系圈。如果你也做过 数据产品的产品经理&#xff…

Java EE CDI程序化依赖关系消歧示例–注入点检查

在本教程中,我们将看到在注入Java EE CDI bean时如何避免程序依赖消除歧义。 我们已经在Jave EE依赖关系消除歧义示例中展示了如何避免CDI Bean中的依赖关系歧义消除。 在这里,我们将向您展示如何以动态方式避免依赖消除歧义。 我们将通过检查注入另一个…

机器学习算法整理(四)集成算法—随机森林模型

随机:数据采样随机,特征选择随机 (数据采样,有放回) 转载于:https://www.cnblogs.com/douzujun/p/8386930.html

linux人脸识别视频推流,RTMP推流协议视频智能分析/人脸识别/直播点播平台EasyDSS接口调用注意事项介绍...

TSINGSEE青犀视频目前推出了前端支持不同协议设备接入的视频智能分析平台,包括RTSP协议的EasyNVR、GB28181协议的EasyGBS,RTMP推流协议的EasyDSS,还有能够进行人脸识别、车牌识别的EasyCVR,这些平台均提供了视频转码分发的能力&am…

在基于图论的Java程序中基于DSL的输入图数据的方法

我们大多数人已经编写了一些程序来处理图论算法,例如查找两个顶点之间的最短路径,查找给定图的最小生成树等等。 在这些算法的每一种中,表示图形的编程方式是使用邻接矩阵或邻接表 。 两者都不是定义图形输入的非常直观的方法。 例如&#xf…

Remmarguts' Date(POJ2449+最短路+A*算法)

题目链接&#xff1a;http://poj.org/problem?id2449 题目&#xff1a; 题意&#xff1a;求有向图两点间的k短路。 思路&#xff1a;最短路A*算法 代码实现如下&#xff1a; 1 #include <set>2 #include <map>3 #include <queue>4 #include <stack>5 …

usb3.0 linux无法识别,USB3.0接口不能识别U盘的解决方法

USB接口可以说是电脑的标配&#xff0c;现在基本上所有电脑都会搭载USB接口。而USB标准从1.0发展到现在的3.0&#xff0c;甚至更新的也已出来。不过&#xff0c;如果USB3.0无法识别U盘&#xff0c;那该怎么办呢?USB3.0是一种技术也是一种规范&#xff0c;现在很多笔记本都是默…

table 鼠标移上去改变单元格边框颜色。

表格定义了 border-collapse:collapse;边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。用td:hover,显示不全 搜索了好久&#xff0c;没有找到好的方法&#xff0c;用左右边框也不完美。 于是就在想&#xff0c;移上去的时候给加个伪元素after&#…

PotPlayer安装与配置

目录 1.简介 2.安装 3.设置 基本选项设置&#xff1a; 播放选项设置&#xff1a; PotPlayer皮肤设置&#xff1a; 1.简介 PotPlayer一款小巧简单的视频播放软件&#xff0c;具有于强大的定制能力和个性化功能。 2.安装 官网下载 potplayer http://potplayer.daum.net/?langzh_…

Hadoop的目录结构

转载于:https://www.cnblogs.com/wzlbigdata/p/8392162.html

linux 实验 ps,Linux实验室:监控命令iostat与ps_服务器x86服务器-中关村在线

4、iostat与上面的命令相似&#xff0c;很显然&#xff0c;这个linux系统监控命令是属于IO监控系列的&#xff0c;iostat(I/O statistics&#xff0c;输入输出统计)是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。例如命令&#xff1a;iostat -m -x 1 1000。从结…

基于浏览器的密钥生成以及与浏览器的密钥/证书存储的交互

想象以下情况&#xff1a; 您需要从访问您的网站的用户那里获取一个密钥&#xff08;在非对称情况下为用户的公共密钥 &#xff09;&#xff0c;并希望浏览器记住私有部分&#xff0c;而不会因冗长的导入过程而困扰用户。 老实说&#xff0c;实际上&#xff0c;您甚至不希望用…

linux制作一键恢复,Linux/Centos Mondo 一键部署、镜像恢复,快速部署

1.环境准备image.png2.安装mondocurl -o /etc/yum.repos.d/mondorescue.repo ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.reposed -i s#gpgcheck1#gpgcheck0#g /etc/yum.repos.d/mondorescue.repoyum -y install mondosed -i s#EXTRA_SPACE150000#EXTRA_SPACE650000…

转载:pycharm最新版新建工程没导入本地包问题:module 'selenium.webdriver' has no attribute 'Firefox'...

pycharm最新版新建工程没导入本地包问题&#xff1a;module selenium.webdriver has no attribute Firefox 前言 最新版的pycharm做了很大的改变&#xff0c;新建工程的时候&#xff0c;默认不导入本地的安装包&#xff0c;这就导致很多小伙伴踩坑了。。。明明已经pip安装过sel…

chrome 开发者工具,查看元素 hover 样式

在web开发中&#xff0c;浏览器开发者工具是我们常用的调试工具。我们经常会有这样的需求&#xff0c;就是查看元素的时候需要查看它的hover样式。相信有很多小伙伴都遇到过这样的情形&#xff0c;始终选不中hover后的元素状态。其实在开发者工具中是有地方可以设置的。方法如下…