linux学习0926

1.linux常用命令

Uname -n 和 hostname  查看主机名;

uname -m 查看版本

Uname -r 查看内核版本

rm -rf 非空目录  可以删除非空目录

 

配置文件:vim /etc/sysconfig/network-scripts/ifcfg-eth0 配置网络

ONBOOT=yes , dhcp动态网络默认,static就要手动设置IP等;

 

常用命令:

Mkdir -p 创建嵌套命令;

 

Man 命令  查看命令的用法用man;

 

echo “内容” > a.txt  把双引号里面的内容输入a.txt中,再次操作就是把里面的内容覆盖掉,如果不想原来的内容被覆盖掉用两个大于号“>>”,>覆盖 >>不覆盖

eg: echo “内容” >> a.txt     好处不用vim繁琐;

echo 333 >a.txt 111>b.txt   正确的就输入到a.txt, 错误就输入到b.txt;

 

Cat  > a.txt << n  (n可以是任意字母)  enter后可以输入内容,直到输入n 按下enter后才结束输入。>覆盖 >>不覆盖

Cat 文件 查看文件;

cat -n 文件 查看文件并且显示行号;

 

Cp 复制命令;

find 绝对路径 类型 。。。

Eg: Find .  -name man 在当前目录下查找名称为man的文件

    find  / -type f ! -name a.txt  在根目录下查找 名称不是 a.txt的文件;

绝对路径:从根目录写起的路径 eg:/etc/sysconfig/network

相对路径:相对于当前的路径 eg : ../...

 

. 当前目录 .. 当前目录的上层目录 - 前一个目录 ~用户家目录

Cd ../.. ;

Pwd 查看当前路径目录

 

 headfile 默认显示前10行

 Head-n file 显示前n行

tail -n file 显示尾部n行 默认显示后10行

这两个一般用来查看log文件

 

Tab 自动补全

Cat > a.txt << a

<`seq 100`

<a

创建了100行

Seq 1 10 创建从某个数到另一个数之间的所有整数

 

Linux 三剑客

1、Sed (行)

  Sed -n ‘20,30p’ file  查看文件里面2030行的内容

  Head -30 file | tail -11   | 管道符过滤

2、awk (列)

awk ‘{}’

 awk '{if(NR<31 && NR >19)printf$1"\n"}' a.txt

3、grep (过滤)

  grep “文件”路径 在某个路径下过滤出文件

 查找替换功能可以在Vim 编辑器中进行,也可以用sed

  sed -i 's#1#haha#g' a.txt (-i永久修改,没有参数-i临时修改)

 Sed -i ‘s/原字符/新字符/g’文件名

Sed –e ‘3d’ /liyue/man.txt   临时直接删除/liyue/man.txt 中第3行

Sed –e ‘3,12d’ /liyue/man.txt  临时直接删除/liyue/man.txt中3到12行

Sed -e ’10,$d’ /liyue/man.txt  临时直接删除/liyue/man.txt中10到最后

-i参数永久删除

d就是删除的意思,

 sed后面接的动作,请务必以 ” 两个单引号括住喔!

linux常用命令

yum install  rpm包或者解压的安装包

Alias 起别名

Unalias 取消别名

 rpm -qa httpd 安装软件之前先用这个命令检查查看Linux是否安装默认的这个软件

Yum list 软件包检查是否安装了该软件

Useradd 用户名添加用户名

tail /etc/passwd 查看所有用户名

/etc/shadow

Passwd 用户名添加密码

Passwd -d 用户名删除密码也能登陆

Whoami

Su - 用户名  切换用户

 

2.Linux服务器前,改下这个文件:

# vim /etc/selinux/config中的 SELINUX=enforcing 改为 disabled

sed -i's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config

setenforce 0 这个命令不用重启就能生效;

Getenforce     查看selinux是什么等级

 

3.nlevel 查看当前的运行级别

 cat /etc/inittab 查看所有的运行级别,如下:

# Default runlevel. The runlevels usedare:
#  0 - halt (Do NOT set initdefault to this)A
#  1 - Single user mode  单用户模式
#  2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)
#  3 - Full multiuser mode
#  4 - unused
#  5 - X11  桌面
#  6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

Init 3 切换到第3个级别

4.chkconfig自启动

  Man chkconfig
   chkconfig --list mysqld   -- 列出这个服务在0~6运行级别开机自启动的情况
   chkconfig --list sshd
   chkconfig --level 5  mysqld on  设置某个服务在某个运行级别开机自启动
   chkconfig mysqld on 设置开机自启动

5.iptables 防火墙

iptables -L -n
service iptables stop  关闭防火墙
service iptables start 开启防火墙
ss -lnt 查看端口
netstat -lnt

diff 比较命令  结果是列出比较的几个文件不同之处

6.配置文件先备份,cp man.config  man.config.bat

Which cp

Whereis -b cp    man whereis

 1> /dev/null 2>/dev/null  (销毁文件)

 1> /dev/null 2>&1  &1表示2中的和1一样,这两个命令是一样的

export TMOUT=10 设置10s关闭终端TTY

Cat /etc/profile 中查看设置的时间

History -c 删除所有历史记录

History -d 号码 删除对应的历史命令

Ulimit -n 查看文件描述符,进程文件需要一定的文件描述符,如果不够的这个进程就起不来。

ulimit -SHn 65535 修改大小,但没有生效。

vim /etc/sysctl.conf 内核参数的文件

Tree -L 1 /

/etc 放配置文件的目录,/tmp 放置临时文件,/usr 用户文件,/proc 显示内核信息的虚拟文件系统, /mnt 挂载目录,/dev设备文件,/sbin和/bin 存命令的目录

7.Linux服务器:(rpm安装、yum安装、源码安装)

一种是直接用官方打好的rpm或者deb包安装

   优点:方便快捷。安装速度快

    缺点:不可定制。

1

2

 yum 安装

 yum -y install httpd  (此方法安装的是2.2.2的版本)

 

下面用源码安装,方便可以自定义参数。

1.先创建一个目录;

2.先装Apache,www.apache.org 这个官方网站,选版本最好选一年前的。

3.安装前用rpm -qa http* 检查是否有默认的安装;

4.Wget http://apache.fayea.com/httpd/httpd-2.2.31.tar.gz 下载下来

5.解压这个包,tar -zxvf 包名 解压到当前目录

6.查看  README 和 install文件(用来了解安装)

7.yum install zlib-devel –y

 yum install gcc -y  安装C语言编译器

8.安装Apach

cd httpd-2.2.31 一定要切换到这个目录再执行下面的
./configure \
--prefix=/application/apache-2.2.31 \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--with-mpm=worker \
--enable-rewrite

以下是解释:

./configure \    ./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,但并不是所有的tar包都是源代码的包,楼主可以ls看看有没有configure这个文件,也许你下的是二进制的包,如果是二进制的包,解压后直接就能使用;

  configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在/usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定–sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。

--prefix= /application/apache2.2.31\    安装路径

--enable-deflate \   压缩(提高性能),客户端请求服务器资源压缩包,优点快,宽带小,缺点消耗CPU基本对文本压缩效率更高,但不是什么都压缩,图片可以但是视频就不要压缩。

--enable-expires \  过期(缓存),作用:当浏览器访问网站时浏览器有缓存时,浏览器打开页面之后,内容在浏览器里缓存着,服务器设置的参数,再次打开就不用下载这部分内容了,但是若网站更新后还是这个内容。

--enable-headers \   激活headers,http的头部

--enable-modules=most \  激活大多数常用模块

--enable-so \

--with-mpm=worker \  工作模式worker,一个主进程生成子进程接收用户请求,prefork进程工作,进程相对安全、稳定、进程的缺点是消耗资源较多,优点稳定,一般worker模式并发会大一些

--enable-rewrite    伪静态功能

 

9.echo $?   装好软件后用这个命令检查,如果是0 代表没有错误;(装任何软件都行)

10.make && make install   (make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。)

make,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。make insatll,这条命令来进行安装(当然有些软件需要先运行 makecheck 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件))

没有错误用这命令编译;

11.echo  $?

12.创建软连接

  ln -s /application/apache-2.2.31 /application/apache

13.启动Apache

 检查语法:/application/apache/bin/apachectl -t

没问题启动Apache :/application/apache/bin/apachectl start

14.查看端口:80

  ss -lnt 或者netstat -lnt

 查看进程: ps -ef | grep httpd  或者 ps -Af | grephttpd

httpd-mpm.conf 性能调优文件;

httpd-vhosts.conf 配置虚拟主机相关内容;

Httpd.conf 主配置文件;

了解发一个请求服务是怎么相应的php;

lsof -i :80  查看80端口是否起来

8.服务器框架:

1.Lamp+lnmp (必须先安装MySQL再安装php)

Linux、Apache、MySQL、php

2.Lnmp

  Linux、nginx、MySQL、php

3.Lanmp

 Linux、Apache(当作服务器)、nginx(反向代理)、MySQL、php

Yslow (前端页面工具,做前端性能时要安装这个)百度

9.MySQL

  用yum安装,参考文档。

  启动MySQL:输入 mysql -uroot -p  再输入密码就行;

   chkconfig --list mysqld   -- 列出这个服务在0~6运行级别开机自启动的情况

   chkconfig --list sshd

   chkconfig --level 5  mysqld on  设置某个服务在某个运行级别开机自启动

10.nginx

1.wget  http://nginx.org

2. ls nginx-1.8.1.tar.gz -sh 查看压缩包大小

3.tar -xf nginx-1.8.1.tar.gz 解压到当前目录

4.安装nginx:----》编译

  cd nginx-1.8.1 

  (执行下面的内容后echo &?是否为0,OK的就用make &make install 安装;如果提示不行 就用vim 写个日志,如下然后cat 日志 | bash 后,再安装。)

 Vim a.log
 ./configure \
 --user=nginx \
 --group=nginx \
 --prefix=/application/nginx1.8.1 \
 --with-http_stub_status_module \
 --with-http_ssl_module
Cat a.log | bash

./configure: error: the HTTP rewrite module requires the PCRElibrary.

You can either disable the module byusing --without-http_rewrite_module

option, or install the PCRE library intothe system, or build the PCRE library

statically from the source with nginx byusing --with-pcre=<path> option.)这个怎么解决???方法如下:(参考http://blog.youkuaiyun.com/hfsu0419/article/details/7190152

 yum -y install pcre-devel  openssl  openssl-devel
./configure --prefix=/usr/local/nginx

5.make & make install --->安装

 (nginx优点:配置简单、灵活,高并发(静态小文件,静态并发1-2w),同时处理的连接数比较多,占用资源少,功能种类多,支持epoll模型,)

6.创建软连接(相当于Windows下的快捷方式)

 ln -s /application/nginx1.8.1/ /application/nginx

 ln -s 原文件 软连接名

7.启动nginx,执行以下命令

 /application/nginx/sbin/nginx

 启动时出现“nginx: [emerg]getpwnam("nginx") failed”怎么办?

  先创建用户:useradd nginx -s /sbin/nologin -M

  在执行启动命令即可。

创建用户后启动提示80端口被使用时“Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address alreadyin use),sudo fuser -k  80/tcp 再kill ,再次启动即可。

8.启动测试:在浏览器输入IP地址如果能够打开就是启动成功了。

  就是显示这个目录/application/nginx/html的index.html里面的内容。

  ss - lnt (tcp) ss - lntu (udp)   80是服务器的端口,22是终端的端口;

 ps -Af | grep nginx   查看这个进程,kill 15 进程号  可以把这个杀掉;

Nginx使用epoll模型 --相当于一个索引 (所以运行快,效率高)

Apache使用select ;

Apache处理的是静态请求(如打开页面),如果有动态请求(例如搜索),动态请求会给php,有php脚本去跟MySQL交互。(这也是基本的架构处理方式);

Cdm 加速器,请百度;

Memcached 缓存服务器

了解apache和nginx和用户请求模型;

Nginx.conf

Httpd.conf

11.进程命令

top

Load average(平均负载):在1min ,5min ,15min时,过去1分钟之内的CPU的平均队列,一般这个值都要小于1,如果大于1就代表CPU忙不过来,可能CPU就是系统瓶颈,代表每一分钟在CPU上等待运行的进程有很多个。

%us/%sy=7/3,这是合理的比例;%sy过大的话,则系统调用多;

%wa过大的说明IO 存在问题,需要换固态硬盘;

按键盘的m,出现men、swap相关的数据;

按键盘的P(大写),就按%CPU占用大小排序;

按键盘的T,就按时间TIME+排序;

htop命令;

Vmstat命令(Linux/Unix监控工具);----》百度

Eg: vmstat 2 1

    2表示每个两秒采集一次服务器状态,1表示只采集一次。

  [root@localhost/]# vmstat 2 3
procs -----------memory-------------swap-- -----io---- --system-- -----cpu-----
 r b   swpd   free  buff  cache   si  so    bi    bo  in   cs us sy id wa st
 0 0      0 255896 119840 357728    0   0    75    12  54   84  0  197  2 0
 0 0      0 255896 119840 357728    0   0     0     0  34   60  0  199  0 0
 0 0      0 255756 119840 357728    0   0     0     0  48   70  0  199  0 0

  注意:第一行产生的报告是自上次重启之后的平均值,因此应该考虑排除它,

dstat  (百度) 可以看占用CPU的最大进程、占用内存空间比较大的进程,在性能调优时用这个命令查看占用CPU最大的进程,然后查看这个进程进行优化。

 通过yum install dstat 安装

dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat克服了这些命令的局限并增加了一些另外的功能,增加了监控项,也变得更灵活了。dstat可以很方便监控系统运行状况并用于基准测试和排除故障。

dstat可以让你实时地看到所有系统资源,

Ps

 Ps axu   查看所有进程

 ps axo pid,ni, command  可以指定特定的内容。

 Ps -Af    查看所有进程

Ctrl +z   把程序调到后台运行,输入jobs 就把后台运行的程序列出来,按优先级分为“+ 、-、无符号”,输入(fg 序列号)命令就把优先级最高的调到前台运行,后台的各进一个等级。也就是- 变+ ,无符号变-;(bg 序列号)命令就是在后台直接运行某个程序。

Kill 15 进程号   kill  9 进程号  (15 等这个程序运行后kill,较为人性化;9强制杀掉)

Pstree

pgrep

Nice 设置优先级的,linux支持的nice级别可从19(最低优先级)到-20(最高优先级)。默认值为0,把一个程序的nice级别改为一个负数(使它有较高的优先级),则需要使用root权限。

pidof

dstat

renice

fg Ctrl+z 就把进程或线程调到后台,jobs查看所有在后台的进程或线程,+表示优先级高,先执行,fg 进程号,把对应的进程调到前台执行,fg不加进程号则执行优先级最高的进程或线程,bg在后台直接执行进程。

bg

pkill

pgrep

Pstree

tty

dstat这个命令可以看占用CPU最大的进程

2.占用内存空间比较大的进程

ps axo,,o可以指定查看的列比如pid,ni,command
  325  echo $?
  326  yum install libncursesw -y
  327  yum install --disable-unicode -y
  328  ./configure
  329  yum install ncurses-devel
  330  ./configure
  331  echo $?
  332  make & make install
  333  htop
  334  make
  335  make install
  336  ls
  337  htop
  338  top
  339  data
  340  date
  341  cd ~
  342  ls
  343  clear
  344  uname -n 查看主机名;
  345  cat /etc/sysconfig/network-scripts/ifcfg-eth0
  346  vim /etc/sysconfig/network-scripts/ifcfg-eth0
  347  cat /etc linux/config
  348  vim /etc linux/config
  349  cat /etc linux/config
  350  sed -i 's#SELINUX=enforcing#SELINUX= disabled#g' /etc linux/config
  351  cat /etc linux/config
  352  setenforce
  353  getenforce
  354  runlevel  查看当前运行级别
  355  cat /etc/inittab
  358  man chkconfig
  359  chkconfig --list|grep 3:on
  360  chkconfig --list|grep 3:开启
  361  chkconfig   开机自启动
  362  chkconfig --list|grep 3:启用
  363  iptables   防火墙
  364  iptables -L -n
  365  service iptables stop  关闭防火墙
  366  /etc/init.d/iptables start  开启防火墙
  367  /etc/init.d/iptables stop
  368  history

 2  cat~/.bash_history

   3  vim ~/.bash_history

   4  ulimit

   5  ulimit -n

   6  cat ~/.bash_history

   7  ulimit -n

   8  ulimit -SHn 65535

   9  ulimit -n

  10  vim /etc/sysctl.conf

  11  cat ~/.bash_history

  12  tree -L 1 /

  13  cat /procmem

  14  cd /proc/

  15  ls

  16  cat meminfo

  17  cat cpuinfo

  18  tree -L 1 /

  19  top

  20  htop

  21  cd /home/ale/tools/

  22  ls

  23  history

www.apache.org


 

ls -l  以长格式列出文件或者目录

-rwxr-xr--.     1    dev01   dgroup   116   9月2712:42             helloworld.sh

   1       2      3       4      5         6                        7

1. - rwx                 r-x                    r--.  文件或目录的类型和权限

     7                   5                       4   (这个具有754权限)

   文件拥有者的权限   从属用户组里面的用户的权限      others的权限

3.   dev01      文件的拥有者(只能有一个)

4.   dgroup     文件从属的用户组

    把其他用户加入到用户组中:usermod -G 用户组 用户名

  在Linux中与一个文件有关系的用户分成3类,文件拥有者(也就是第3个字段的内容,文件的拥有者只能有一个)、文件所从属的用户组里面的用户(也就是第4个字段,用户可以有多个)、除了这两类用户之外的用户others 。

r读权限,可以查看这个文件的内容;w写权限,可以修改这个文件内容或者删除这个文件;x执行权限,可以运行这个文件;  - 没有相应的权限。

修改文件的属性:chmod 700 文件名  把这个文件的权限改为了700

怎么查看用户组里面的所有用户啊?

 查看所有用户在这个文件/etc/passwd  查看所有的用户组在这个文件/etc/group

修改文件的拥有者和从属的用户组:chown 拥有者:用户组 文件名

                                Eg:chownly:we_group a.txt

只更改从属用户组:chown  :新用户组 文件名

只更改拥有者    : chown  新拥有者: 文件名


!e--->export TMOUT=5 然后就是从普通用户自动切换到root用户 ,但是目录不

 

Ctrl+z 就把进程或线程调到后台,jobs查看所有在后台的进程或线程,+表示优先级高,先执行,fg 进程号,把对应的进程调到前台执行,fg不加进程号则执行优先级最高的进程或线程,bg在后台直接执行进程。

serviceiptables status  查看防火墙状态

 如:

[root@localhost~]# service iptables status
iptables:未运行防火墙。
service iptables start/stop  开启/关闭防火墙
service network start/restart/stop  开启/重新开启/停止网络服务
service network status 查看网络状态
netstat -n|awk '/^tcp/ {++S[$NF]} END {for(a in S)print a,S[a]}'
ESTABLISHED 1  ESTABLISHED的意思是建立连接。表示两台机器正在通信。
established

Linux 中使用chattr 指令设置文件属性预防文件被更改或删除

 Linux 中有一个 chattr 指令,它可以用来设置文件的各种属性,防止文件被删除或是更改,即使是有管理者root权限的时候也无法改动chattr指令是用来设置文件属性用的,而 lsattr指令则可用来查看文件的属性,这两个指令是包含在 e2fsprogs套件之中,一般的 Linux发行版通常都会预先安装好。

chattr [-RVf] [operator][attribute(s)] files...其中operator可以是 +- =,后面再加上要设置的 attribute(s),这跟 chmod指令的用法类似,以下是一些常用的属性:

 i文件不可以被改动(immutable),不可以写入、删除、建立链结档等。

   touch test.txt
   lsattr test.txt    
     -------------e- test.txt

   这里的输出跟 ls -l 的输出类似,如果是 - 则代表该属性没有被设置,如果有被设置的话,就会出现对应的英文字母。

   下面设置为不能删除:

chattr +i test.txt
lsattr test.txt
  ----i--------e- test.txt

rm -rf test.txt 则:

  rm: 无法删除"test.txt":不允许的操作

如果真的要删除这个文件,就先必须把 i 属性拿掉才行:

chattr -i test.txt

如果需要将整个目录底下所有的文件都加上 i 属性,可以使用 -R 参数,例如:

sudo chattr -R +i /etc

让文件只能增加内容,不能删除









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值