应用领域:服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。php
linux启动:Linux系统的启动过程能够分为5个阶段:前端
运行级别:mysql
窗口切换:默认登陆就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你能够按下Ctrl + Alt + F1 ~ F6 来切换它们。当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。linux
Linux关机:正确的关机流程为:sync > shutdown > reboot > haltnginx
sync 将数据由内存同步到硬盘中。 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 忘记密码:进入单用户模式更改一下root密码便可。git
远程登录:Linux系统中是经过ssh服务实现的远程登陆功能,默认ssh服务端口号为 22。Window系统上 Linux 远程登陆客户端有SecureCRT, Putty, SSH Secure Shell等,本文以Putty为例来登陆远程服务器。程序员
putty下载地址:http://www.putty.org/github
登陆系统后,在当前命令窗口下输入命令ls /sql
文件基本操做docker
在Linux中第一个字符表明这个文件是目录、文件或连接文件等等。
[root@www /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot ……
文件属主和属组
[root@www /]# ls -l total 64 drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql ……
chgrp [-R] 属组名 文件名
chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
进入 /root 目录(~)将install.log的拥有者改成bin这个帐号:
[root@www ~] cd ~ [root@www ~]# chown bin install.log [root@www ~]# ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log [root@www ~]# ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
Linux文件属性有两种设置方法,一种是数字,一种是符号。Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有本身的read/write/execute权限。各权限的分数对照表以下:r:4,w:2,x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是须要累加的,例如当权限为: [-rwxrwx---] 分数则是:
因此等一下咱们设定权限的变动时,该文件的权限数字就是770啦!变动权限的指令chmod的语法是这样的:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
chmod [-R] xyz 文件或目录
举例来讲,若是要将.bashrc这个文件全部的权限都设定启用,那么命令以下:
[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
那若是要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。
处理目录的经常使用命令
ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:建立一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
mv: 移动文件与目录,或修改文件与目录的名称
文件内容查看
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,能够看出 tac 是 cat 的倒著写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 相似,可是比 more 更好的是,他能够往前翻页!
head 只看头几行
tail 只看尾巴几行
实现用户帐号的管理,要完成的工做主要有以下几个方面:
用户帐号的添加、删除与修改。
# useradd –d /usr/sam -m sam
用户口令的管理。用户管理的一项重要内容是用户口令的管理。用户帐号刚建立时没有口令,可是被系统锁定,没法使用,必须为其指定口令后才可使用,即便是指定空口令。
用户组的管理。用户组的管理涉及用户组的添加、删除和修改。组的增长、删除和修改实际上就是对/etc/group文件的更新。
Linux磁盘管理好坏直接关系到整个系统的性能问题。Linux磁盘管理经常使用三个命令为df、du和fdisk。
df:列出文件系统的总体磁盘使用量,能够利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
du:检查磁盘空间使用量,Linux du命令是对文件和目录磁盘使用的空间的查看。
fdisk:用于磁盘分区
列出全部分区信息:fdisk -l
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被普遍使用。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的做用分别是:
(1)命令模式
户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动做会被Vim识别为命令,而非输入字符。好比咱们此时按下i,并不会输入一个字符,i被看成了一个命令。如下是经常使用的几个命令:
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。命令模式只有一些最基本的命令,所以仍要依靠底线命令模式输入更多命令。
(2)输入模式
在命令模式下按下i就进入了输入模式。在输入模式中,可使用如下按键:
(3)底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式能够输入单个或多个字符的命令,可用的命令很是多。在底线命令模式中,基本的命令有(已经省略了冒号):
按ESC键可随时退出底线命令模式。简单的说,咱们能够将这三个模式想成底下的图标来表示:
使用案例
建立文件,按下i进入编辑模式,Esc回到通常模式,:wq保存且退出,:q退出
$ vim runoob.txt
常见按键
yum( Yellow dog Updater, Modified)是一个Shell前端软件包管理器。能够自动处理依赖性关系,而且一次安装全部依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至所有软件包的命令,并且命令简洁而又好记。
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 脚本(shell script),是一种为 shell 编写的脚本程序。shell 和 shell script 是两个不一样的概念。新建一个文件 test.sh,扩展名为 sh(sh表明shell)保存为 test.sh,并 cd 到相应目录:
#!/bin/bash echo "这是个人第一行shell命令"
(1)做为可执行程序运行
chmod +x ./test.sh #使脚本具备执行权限 ./test.sh #执行脚本
(2) 做为解释器参数运行
/bin/sh test.sh /bin/php test.php
your_name="runoob.com"
for file in `ls /etc` 或 for file in $(ls /etc)
以上语句将 /etc 下目录的文件名循环出来。
#!/bin/bash myUrl="http://www.google.com" readonly myUrl
unset variable_name
your_name="runoob" # 使用双引号拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用单引号拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3
string="abcd" echo ${#string} #输出 4
string="runoob is a great site" echo ${string:1:4} # 输出 unoo
string="runoob is a great site" echo `expr index "$string" io` # 输出 4
元素用"空格"符号
分割开。定义数组的通常形式为:数组名=(值1 值2 ... 值n) array_name=(value0 value1 value2 value3)
能够不使用连续的下标,并且下标的范围没有限制。
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
读取数组,使用 @ 符号能够获取数组中的全部元素
${数组名[下标]} valuen=${array_name[n]} echo ${array_name[@]}
获取数组长度
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
shell注释。每一行加一个 # 号设置多行注释,
向脚本传递参数,脚本内获取参数的格式为:$n。n 表明一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
#!/bin/bash echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
为脚本设置可执行权限,并执行脚本,输出结果以下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
原生bash不支持简单的数学运算,可是能够经过其余命令来实现,例如 awk 和 expr,expr 最经常使用。expr
是一款表达式计算工具,使用它能完成表达式的求值操做。
(1)算数运算符:乘号(*)前边必须加反斜杠()才能实现乘法运算;if...then...fi 是条件语句.
(2)关系运算符
(3)布尔运算符
(4)字符串运算符
(5)文件测试运算符
换行
结果定向到文件
echo "It is a test" > myfile
显示当前时间
echo `date`
%s %c %d %f都是格式替代符;%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,若是不足则自动以空格填充,超过也会将内容所有显示出来。%-4.2f 指格式化为小数,其中.2指保留2位小数。
Python,Java、PHP等语言不同,sh的流程控制不可为空.
使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不须要加上 $ 来表示变量
取值后面必须为单词in,每一模式必须以右括号结束。取值能够为变量或常数。匹配发现取值符合某一模式后,其间全部命令开始执行直至 ;;。取值将检测匹配的每个模式。一旦模式匹配,则执行完匹配模式相应命令后再也不继续其余模式。若是无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。下面的脚本提示输入1到4,与每一种模式进行匹配:
echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字:" read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束" break ;; esac done
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字: " read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue echo "游戏结束" ;; esac done
#!/bin/bash funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "输入的两个数字之和为 $? !"
函数返回值在调用该函数后经过 $? 来得到。
在Shell中,调用函数时能够向其传递参数。在函数体内部,经过 n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...
funWithParam(){ echo "第一个参数为 $1 !" echo "第二个参数为 $2 !" echo "第十个参数为 $10 !" echo "第十个参数为 ${10} !" echo "第十一个参数为 ${11} !" echo "参数总数有 $# 个!" echo "做为一个字符串输出全部参数 $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73
$ echo "菜鸟教程:www.runoob.com" >> users $ cat users 菜鸟教程:www.runoob.com 菜鸟教程:www.runoob.com $
输入重定向
通常状况下,每一个 Unix/Linux 命令运行时都会打开三个文件:
默认状况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
$ command 2 > file
test1.sh 代码以下:
#!/bin/bash url="http://www.runoob.com"
test2.sh 代码以下:
#!/bin/bash #使用 . 号来引用test1.sh 文件 . ./test1.sh # 或者使用如下包含文件代码 # source ./test1.sh echo "菜鸟教程官网地址:$url"
接下来,咱们为 test2.sh 添加可执行权限并执行:
$ chmod +x test2.sh $ ./test2.sh 菜鸟教程官网地址:http://www.runoob.com
注:被包含的文件 test1.sh 不须要可执行权限
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高链接并发的状况下,Nginx是Apache服务器不错的替代品。