常用Linux命令总结

常用Linux命令总结

  • 1. 常用技巧
    • 1.1. linux shell 将上一个命令的输出作为下一个命令的参数
    • 1.2. xargs
  • 2. 常用目录说明
    • 2.1. /home:
    • 2.2. /media:
    • 2.3. /bin
    • 2.4. /sbin:
    • 2.5. /usr/bin:
    • 2.6. /usr/sbin:
    • 2.7. /var:
    • 2.8. /dev
    • 2.9. /boot:
    • 2.10. /etc:
  • 3. 文件操作
    • 3.1. vim的使用
    • 3.2. gedit
    • 3.3. nano
    • 3.4. 目录或文件操作
    • 3.5. 权限相关
    • 3.6. 文本文件查看
    • 3.7. 压缩文件
      • 3.7.1. tar
      • 3.7.2. zip
      • 3.7.3. unzip 解压缩zip文件
  • 4. 定时任务
    • 4.1. 配置定时任务
    • 4.2. crontab cron
    • 4.3. 示例
  • 5. 网络相关
  • 6. 防火墙
    • 6.1. Linux 防火墙开放特定端口 (iptables)
    • 6.2. iptables:unrecognized service 的解决方法
  • 7. 操作系统相关
    • 7.1. ps详解
      • 7.1.1. `ps -ef` 和`ps aux`的差别
        • 7.1.1.1. `ps -ef`
        • 7.1.1.2. `ps aux`
    • 7.2. 磁盘挂载
    • 7.3. 终端相关
      • 7.3.1. 终端中程序在后台运行
      • 7.3.2. 输出重定向
  • 8. shell编程
    • 8.1. Shell 变量
      • 8.1.1. 变量定义
      • 8.1.2. 使用变量
      • 8.1.3. 将命令输出到变量
  • 9. 软件相关
    • 9.1. 软件安装
      • 9.1.1. 源码安装
        • 9.1.1.1. /configure
        • 9.1.1.2. make
        • 9.1.1.3. make install
    • 9.2. openssh
    • 9.3. svn
    • 9.4. wps
    • 9.5. nginx
      • 9.5.1. 安装pcre
      • 9.5.2. 安装nginx
      • 9.5.3. 运行nginx
      • 9.5.4. 配置nginx
      • 9.5.5. nginx中关于正则的内容
      • 9.5.6. 其它
      • 9.5.7. 日志

1. 常用技巧

1.1. linux shell 将上一个命令的输出作为下一个命令的参数

如下,使用反引号或者$()

top -p `pgrep proname`
top -p $(pgrep proname)

1.2. xargs

2. 常用目录说明

/etc: 这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的普通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

2.1. /home:

用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。需要注意的是root用户的home目录不在/home下,而是单独的/root

2.2. /media:

linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

2.3. /bin

/bin(bin是binary的缩写)下存放着linux的最经常使用的命令,如:ls、mkdir、rm等。

2.4. /sbin:

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

2.5. /usr/bin:

系统用户使用的应用程序。

2.6. /usr/sbin:

超级用户使用的比较高级的管理程序和系统守护程序。

2.7. /var:

这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

如/var/log这个目录中的文件auth.log,就是每次sudo的记录。打开auth.log就可以看出哪个用户在什么时间请求鉴权,以及鉴权的结果。

2.8. /dev

/dev(dev是device的缩写)存放的是设备文件。在linux写,一切皆是文件,因此/dev下的每一个文件都对应一个设备。在Linux中访问设备的方式和访问文件的方式是相同的。

使用fdisk查找的就是/dev/下的文件内容

/dev/hd[a-t]:IDE设备
/dev/sd[a-z]:SCSI设备
/dev/fd[0-7]:标准软驱
/dev/md[0-31]:软raid设备
/dev/loop[0-7]:本地回环设备
/dev/ram[0-15]:内存
/dev/null:无限数据接收设备,相当于黑洞
/dev/zero:无限零资源
/dev/tty[0-63]:虚拟终端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制台
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/dev/random:随机数设备
/dev/urandom:随机数设备

2.9. /boot:

这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。如:grup

2.10. /etc:

etc不是什么缩写,是and so on的意思 来源于 法语的 et cetera 翻译成中文就是 等等 的意思

这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/etc/hosts*:主机相关配置
/etc/sysconfig/iptables : 防火墙
/etc/vim:vim的配置文件说明
/etc/init.d 目录包含许多系统各种服务的启动和停止脚本。如ssh()、cron(定时任务)

可以用来启动服务,如:

##启动ssh服务
/etc/init.d/ssh start

3. 文件操作

3.1. vim的使用

  1. 在命令模式下,按i进入编辑模式
  2. 在编辑模式下,按esc进入命令模式
  3. 在命令行模式下,按:进入底行命令模式
  4. 命令行模式下
    • 光标移动
      1. 直接输入数字,将跳转到对应的行。
      2. h(←);j(↓);k(↑);l(→);
      3. set number或者set nu,显示行号;set nonumber或者set nonu,取消显示行号;
      4. ctrl+f(forword):向下翻一页,相当于pagedown
      5. ctrl+b(back):向上翻一页,相当于pageup
    • 查找
      • shift + * : 快速选中该单词
      • /word : 从上往下搜索单词word
      • ?word :从下往上搜索单词word
      • n : 上一个匹配
      • N : 下一个匹配
    • 复制粘贴剪切
      1. u:撤销上一步操作
      2. ctr r:redo,恢复上一步被撤销的操作
      3. x:删除当前光标下的字符
      4. dw:剪切光标之后的单词(英文的一个单词或者标点,中文未知规则)剩余部分,包括空格。
      5. de:剪切光标之后的单词(英文的一个单词或者标点,中文未知规则)剩余部分,不包括空格。
      6. d$:剪切光标之后的该行剩余部分。
      7. dd:剪切当前行。
      8. ndd:剪切n行
      9. d0:从当前位置剪切至行首
      10. yw:复制光标之后的单词(英文的一个单词或者标点,中文未知规则)剩余部分,包括空格。
      11. ye:复制光标之后的单词(英文的一个单词或者标点,中文未知规则)剩余部分,不包括空格。
      12. y$:复制光标之后的该行剩余部分。
      13. yy:复制当前行。
      14. nyy:复制n行
      15. y0:从当前位置复制至行首
      16. c 功能和d相同,区别在于完成删除操作后进入INSERT MODE
      17. cc 也是删除当前行,然后进入INSERT MODE
      18. v进入可视模式进行选择,y复制,p粘贴,d剪切;
    • 文件保存等
      • q,退出;
      • w [文件名]:写入文件(如果后边跟有文件名,则是复制文件并重命名,已修改的内容保存至新的文件,被复制文件不改变)
      • !:英文感叹号,意为强制。如:q!,强制退出不保存
      • x:如果文件发生改变,则保存并退出,否则直接退出[和ZZ一样]

3.2. gedit

很多系统默认也有gedit,所有在vim一时不知道怎么使用的情况下,可以使用gedit命令凑合一下

3.3. nano

gedit在类似于putty等环境下是无法使用的。这个时候可以使用nano来代替。nano使用起来没有vi/vim那么麻烦。而且在nano界面的下方会有快捷键的提示。

3.4. 目录或文件操作

  • cd 切换目录。如果文件路径中有空格,则需要使用\进行转义
  • ls -al 已经被用烂了。-h 以易于阅读的文件尺寸显示,-a 查看所有文件,包括隐藏文件;-l 列出所有信息
  • touch filename [filename1 …] :如果文件不存在则创建一个(或多个)新文件
  • rm 删除文件或者文件夹,如果要删除的是文件夹,需要使用参数-r(级联),-f(强制删除)
  • mkdir path1[ path2 …] 创建文件夹,如果没有参数只能创建单级文件夹,若要连续创建父子文件夹,需要使用参数-p(parent之意)
  • rmdir 删除空目录(感觉没啥用)
  • file filename 查看文件类型
  • find path -name char 在path下查找文件名中包含char的文件
  • sudo updatedb + locate filename 配合查找文件,需要注意 a:默认每天一次updatedb,如果没有找到,请updatedb b:在非Linux的文件系统下的文件找不到,比如我装的双系统中,locate找不到win7下的文件。
  • mv filename1 filename2 path 将file1、file2移动到path下;也可用来重命名:mv oldfilename newfilename
  • cp 拷贝文件。
  • Linux没有windows中的隐藏文件概念,默认的,以点.开头文件名的文件是隐藏文件。
  • du -sh 文件名称(*星号表示当前目录下的所有文件):显示文件大小

3.5. 权限相关

  • chown username filename 将filename的拥有者改为username,一般需要使用管理员权限。需要注意,如果filename是一个文件夹,如果没有使用-R选项的话,chown只改变当前文件夹的拥有者,不改变子文件夹的拥有者。
  • chgrp groupname filename 更改filename的群组为groupname,使用起来和chown没有太大差别。
  • chmod 用来设置文件的权限。在终端中使用ls -l,显示文件权限相关的项目如-rwxrwxrwx,第一位代表的是文件类型,-代表文件,d代表dir即文件夹;第一组rwx指的是拥有者的读、写、执行权限;第二组代表的是群组的读、写、执行权限;最后一组则是other的读、写、执行权限;用法有:a,chmod 777 filename,其中7是rwx的421码的和;b,chmod u+x,g-x,o+w filename,其中u代表拥有者,g代表群组,o代表other,+代表增加权限,-代表减去权限。同上边的chown和chgrp,如果在文件夹上递归改变权限的话,需要使用-R选项。
  • chmod +x:如果±前边没有u、g、o,那为意味这用户、群组、其它都赋予权限x
  • 读写执行对于文件和文件夹的意义不同,在文件上比较明显,如果在文件夹上的话,则r代表是否可以看到,w代表是否可以在文件夹中新建文件或者文件夹,x则代表是否可以进入该目录。如果没有给文件夹x权限的话,使用cd dir时,会提示“权限不够”;如果没有w权限,在进入文件夹后新建文件夹,会提示“权限不够”;

3.6. 文本文件查看

  • cat filename 显示文件内容。cat filename1 filename2 >filename3将file1,File2合并至file3
  • tac filename : 按照行倒序显示文件内容
  • nl filename :显示文本时,显示行号
  • more filename : 显示文本内容,接着按space键则按屏翻页,按enter键按行翻页
  • less filename :显示文本内容,其实和more一样。有些地方说只支持按行翻页,没发现其实。
  • wc filename1 filename2 … 统计文本文件的字数等信息(newline word btye)
    -c 统计字节数。
    -l 统计行数。
    -m 统计字符数。这个标志不能与 -c 标志一起使用。
    -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
    -L 打印最长行的长度。
    -help 显示帮助信息
    –version 显示版本信息

3.7. 压缩文件

tar命令是大多数发行版自带的,unzip和unrar可能要用包管理器安装一下才有。

目前只接触两个:tar和zip

3.7.1. tar

tar -jcvf filename.tar.bz2 要压缩的文件或文件夹列表
tar -jtvf filename.tar.bz2 查看压缩文件
tar -jxvf filename.tar.bz2 -C 解压缩目录

参数解释

  • c:压缩文件夹
  • t:查看打包文件的内容
  • x:解打包或压缩,可以配合-C制定目录
  • 注意-c -t -x三个命令不能同时出现
  • j:-j 通过bzip2的支持进行解压或压缩
  • z:-z 通过gzip的支持进行压缩或解压
  • f:-f filename filename为要处理的文件
  • C:-C dir dir为指定压缩或者解压缩的目录

常用组合

tar -tf filename.tar.bz2 查看文件内容

3.7.2. zip

注意:压缩文件夹时,如果没有指定-r参数,则无法压缩文件夹内的文件。

常用参数有

  • r:递归处理目录及目录下的文件;
  • q:不显示命令执行过程。

示例:

zip filename.zip filename1 filename2

3.7.3. unzip 解压缩zip文件

常用参数

  • d:指定解压到哪个文件夹
  • l:简略模式
  • v:详细模式

示例:

unzip filename.zip -d 文件夹
unzip -l xxx.zip (简略模式)
unzip -v xxx.zip (详细模式)

4. 定时任务

参考:Linux 定时任务

4.1. 配置定时任务

cron有两个配置文件,

  • 全局配置文件(/etc/crontab),是针对系统任务的;
  • crontab命令生成的配置文件(/var/spool/cron下的文件),是 针对某个用户的.

定时任务配置到任意一个中都可以。

查看用户下的定时任务:crontab -l或cat /var/spool/cron/用户名

4.2. crontab cron

定时任务的文件位置在:/var/spool/cron/下(实际测试,确实在这里)
日志文件位置/var/log/cron*(测试中没有找到,因为我自己设置日志位置了?)

  • 服务管理
##网上说是这个路径/etc/init.d/crond status
##但是实际测试时,在路径/etc/init.d/下并没有找到crond,只找到了cron
/etc/init.d/cron status ##查看状态
/etc/init.d/cron restart ##重启服务
/etc/init.d/crond start/stop/restart/reload
#上述命令等价于sudo service cron {start|stop|status|restart|reload|force-reload}

常用Linux命令总结_第1张图片

  • crontab定时任务最小执行时间
    1分钟
    如需要小于1分钟,可通过使用延时来实现每N秒执行或编写shell脚本实现
  • crontab -l 列出所有定时任务
  • crontab -e 修改定时任务文件内容
  • crontab -r 删除某个用户所有的定时任务
  • 查看cron是否运行:ps -aux|grep cron

查看用户下的定时任务:crontab -l或cat /var/spool/cron/用户名

比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

4.3. 示例

1.在/home/lihh/txt/下新建文件test.sh,并编写:

#!/bin/bash
nowdate=`date`
echo $nowdate>1.log

2.使用crontab -e修改定时任务文件,在最后添加如下内容

*/1 * * * * /home/lihh/txt/test.sh

保存后退出

3.如果有异常,会在终端中会显示;如果任务没有问题,显示installing new crontab

5. 网络相关

  • ping 测试连接。常用,不说了。
  • ifconfig 查看网络信息
  • wget url 下载url内容至本地。其常用参数drc 含义为:d,debug之意,显示下载详细信息;r,递归下载;c,断点续传

6. 防火墙

在Ubuntu中,可以使用ufw来简化防火墙操作。参考:如何启动、关闭和设置ubuntu防火墙

6.1. Linux 防火墙开放特定端口 (iptables)

直接编辑/etc/sysconfig/iptables,文件位置及名称不固定,视系统具体情况而定
-A INPUT -p tcp -m tcp --dport 4000 -j ACCEPT
保存在前面部分
再重启:
service iptables restart,在deepin Linux下,该操作失败,使用下边的方法,虽然也失败了,但好歹生效了

6.2. iptables:unrecognized service 的解决方法

iptables:unrecognized service 的解决方法
上边的这个文章写的比较详细,很有参考价值。我在尝试的时候生效的命令是modprobe ip_tables

7. 操作系统相关

  • reboot 重启,logout注销,shutdown关机。这些都需要root权限
  • 注销其它用户的步骤:
    • a:使用who查看:lihh tty1 2018-08-13 12:25 (:0)
    • b:sudo pkill -kill -t tty1,这个tty1和上边who的第二项对应。
  • top 查看进程占用的资源状况,top界面内存单位默认是kib,按E键可以更改内存的单位
  • su 用户名 切换用户
  • cat /proc/version 查看系统内核等。
  • ps aux查看进程,使用grep配合,可以找到程序对应的进程
  • kill 进程号,杀死进程
  • who 当前用户信息;
  • whoami 当前用户名;
  • hostname 计算机名称;
  • uname 系统内核,如果没有加参数,一般为Linux。
    • a:获取全部信息 和/proc/version内容差不多相同
    • 另外还有-s,-n,-r等参数,可man uname查看
  • sudo apt update:在debian下查看是否有软件需要更新;
  • sudo apt upgrade:debian下升级软件
  • sudo apt list --upgradable:debian下查看可以升级的软件列表

7.1. ps详解

参数说明:

  1. ps a 显示现行终端机下的所有程序,包括其他用户的程序。
  2. ps -A 显示所有程序。
  3. ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
  4. ps -e 此参数的效果和指定"A"参数相同。
  5. ps e 列出程序时,显示每个程序所使用的环境变量。
  6. ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
  7. ps -H 显示树状结构,表示程序间的相互关系。
  8. ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
  9. ps s 采用程序信号的格式显示程序状况。
  10. ps S 列出程序时,包括已中断的子程序资料。
  11. ps -t<终端机编号>
  12. ps u  以用户为主的格式来显示程序状况。
  13. ps x  显示所有程序,不以终端机来区分。

7.1.1. ps -efps aux的差别

两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

7.1.1.1. ps -ef

ps -ef 是用标准的格式显示进程的、其格式如下

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 14:46 ?        00:00:06 /sbin/init auto noprompt
root          2      0  0 14:46 ?        00:00:00 [kthreadd]

其中各列的内容意思如下
UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD //命令的名称和参数

7.1.1.2. ps aux

ps aux 是用BSD的格式来显示、其格式如下

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.3  0.1 185232  5748 ?        Ss   14:46   0:06 /sbin/init aut
root          2  0.0  0.0      0     0 ?        S    14:46   0:00 [kthreadd]

ps -ef 不同的有列有

USER //用户名
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有
D //无法中断的休眠状态(通常 IO 的进程);
R //正在运行可中在队列中可过行的;
S //处于休眠状态;
T //停止或被追踪;
W //进入内存交换 (从内核2.6开始无效);
X //死掉的进程 (基本很少见);
Z //僵尸进程;
< //优先级高的进程
N //优先级较低的进程
L //有些页被锁进内存;
s //进程的领导者(在它之下有子进程);
l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);

  •  //位于后台的进程组;
    

7.2. 磁盘挂载

  • df -h查看磁盘使用情况,-h是以mb gb等单位显示。
  • fdisk -l查看系统当前连接的硬盘设置和信息(需要root权限)
  • mount /dev/sdc1 空目录:将设备sdc1挂载到空目录上
  • umount /dev/sdc1:卸载设备/sdc1
  • sync :如果umount失败,使用sync同步数据可减少数据丢失的可能性
  • eject sdc:弹出设备sdc

7.3. 终端相关

  • ctl+alt+t 打开一个新的终端
  • clear 清屏,但是保留着命令执行历史(即可以使用上下键补全);reset 重置,清楚历史,无法使用上下键补全
  • exit 如果不是当前用户,则是退出其它用户;如果已经是当前用户,则表示退出终端。
  • history 查看终端执行命令历史,默认显示1000行。需要注意的是,history显示的是当前用户的命令执行历史,因此不同用户使用history显示内容不同。
  • pwd 查看当前路径。

7.3.1. 终端中程序在后台运行

  • nohup command 让任务后台执行,通常和&一起使用

      nohup find / -name *.log &
    

该命令会提示“忽略输入并把输出追加到nohup.out”,如果后边没有加&的话,ctrl+c后任务终止;加上&后,在显示出提示信息后,按任意键可以回到终端命令行。使用jobs -l可以看到后台运行任务的状态,也可以使用ps aux|grep

  • jobs -l 查看当前后台运行的任务序号、进程号、状态
  • bg %n 让序号为n的任务后台运行。n为任务序号,
  • fg %n 让序号为n的任务前台运行。n为任务序号
  • bg和fg不带%n时,默认是对最后一个任务执行。
  • ctrl+z 中止任务执行,注意不是终止。中止后可使用jobs -l查看。使用fg或者bg开始执行
  • ctrl+c 强行终止任务

7.3.2. 输出重定向

默认情况下,在终端中执行命令,结果会输出到终端屏幕。但是在后头执行的脚本却无法把结果输出到屏幕。
重定向到文件使用>。>表示输出到文件,如果文件已经存在将会覆盖文件中原本的内容如下

date>1.log

如果不想覆盖而是追加,则使用>>

date>>1.log

8. shell编程

参考:Shell 教程

注意点

  • 文件开头:#!/bin/bash
  • .sh文件必须要有可执行权限(x权限)
  • 执行方式:./文件名 或者 sh 文件名
  • 在windows上编写的sh文件,如果在linux上无法执行,需要转一下格式,简单的做法就是在linux下重现复制粘贴一下。

示例:

#!/bin/bash
echo 'hello world'

8.1. Shell 变量

8.1.1. 变量定义

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

8.1.2. 使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"
echo $your_name
echo ${your_name}

8.1.3. 将命令输出到变量

1.两种实现语法

var=$(命令) 
var=`命令` # 注意此处不是普通的单引号

注意:
a. 这两种语法均可实现将命令执行结果保存到var变量中,但是特殊情况下两种方式无法得到正确结果
b. 如果命令执行过程中发生错误,则输出的错误信息不会保存到var变量中

在b这种情况下可尝试直接使用var=’命令’将命令作为字符串保存到变量中,这样当引用变量时即执行该命令,自然也在使用处可直接使用到命令返回值,缺点在于多次使用变量命令则多次执行。

var=`date`
echo $var

9. 软件相关

9.1. 软件安装

9.1.1. 源码安装

参考如下
【转】./configure && make && make install详解
我是在安装nginx的过程中开始接触./configure、make和make install的。下边是自己的一些见解

9.1.1.1. /configure

解压的源码包中可以看到configure这个文件,所以./configure就是执行的这个文件。从网上的资料来看,这个文件是用来检查系统的配置是否符合软件的要求。

9.1.1.2. make

make将像Java开发的编译一样,检查源码是否有问题

9.1.1.3. make install

这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)

9.2. openssh

  • 安装openssh-server:sudo apt install openssh-server
  • 开启服务:/etc/init.d/ssh start
  • 在Windows中下载PuTTy,exe文件,可直接执行,无需安装:需要输入IP和端口

9.3. svn

  • svn ci 提交文件
  • svn update 更新文件
  • svn info查看当前文件夹下的svn信息

9.4. wps

  • wps:打开word相关;
  • et可以打开 excel
  • wpp可以打开ppt相关。

9.5. nginx

需要先安装pcre

9.5.1. 安装pcre

如果遇到error,看一下是不是权限问题,如果是权限问题,那么给个sudo。

tar –zxvf pcre-8.36.tar.gz
cd pcre-8.36

./configure
make
sudo make install

9.5.2. 安装nginx

./configure后的–prefix带不带都行,如果不带,则是在/usr/local/nginx下

cd  /usr/local/nginx-1.9.1
./configure --prefix=/usr/local/nginx-1.9.1
make
make install

9.5.3. 运行nginx

在/usr/local/nginx/sbin下有一个nginx文件,这个就是可执行文件,cd到这个目录下边执行./nginx,如果遇到权限上的问题,请使用sudo

sudo ./nginx 

检查nginx.conf配置文件是否正确

sudo ./nginx -t

如果没有问题,结果是这样的

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

否则,请仔细查看输出的信息,并修改
重新加载配置文件,使配置生效

sudo ./nginx -s reload

9.5.4. 配置nginx

使用正则配置二级域名的转发失败了,暂时还不知道问题出在哪里。

nginx.conf在usr/local/nginx/conf下,我配置的转发如下

        location /{
		    tcp_nodelay     on;
            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
	    proxy_pass http://test.com:8081/;
            #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上  
            root   html;
            index  index.html index.htm;
        }
        location /bi/{
		    tcp_nodelay     on;
            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
	    proxy_pass http://10.10.65.84:8077;
            #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上  
            root   html;
            index  index.html index.htm;
        }

9.5.5. nginx中关于正则的内容

这个我参考网上的,但是在实际操作中并没有用到,也不知道是不是有问题。
Nginx正则表达式之匹配操作符详解

9.5.6. 其它

9.5.7. 日志

如果没有改动配置的话,nginx的配置默认是在usr/local/nginx/logs下
关于日志的参考如下
nginx的日志

你可能感兴趣的:(linux)