linux

开机会自动执行的脚本:

/etc/rc.local -> rc.d/rc.local  (这是自定义的开机初始化)

实际上,所有开机先运行的全在/etc/rc.d下,比如/etc/rc.d/init.d/network启动网络

注意给 rc.d/rc.local 执行权限

-----------------------------------------------------------------------------------

查看文件md5:

md5sum filename

执行命令,前边执行成功,后面才执行:

1 命令之间使用 && 连接,实现 逻辑与的功能。 
2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。

--------------------------------------------------------------------------

查看目录占用空间大小

du -sh ./*

查看进程占用内存

while true;do clear;date;ps aux|grep clamscan|grep -v grep|awk '{print $6/1024 "M" "\t" $0}';sleep 1;done

----------------------------------------------------------------------------------------

 export  环境变量相关操作:

 export -p //列出当前的环境变量值

# export MYENV=7 //定义环境变量并赋值

 -------------------------------------------------------------------------------------------------------------------------

更改hostname

hostname -b  test1

 -----------------------------------------------------------------------------------------------------------------------

curl

获取公网地址:

 curl  ipinfo.io

curl -H "Content-Type: application/json" -X POST -d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }' "http://192.168.0.1:8001/test"

参数 内容
-H 请求头
-d POST内容
-X 请求协议

-------------------------------------------------------------------------------------------------------------------------

kill -15  优雅退出

 ------------------------------------------------------------------------------------------------------

git 常用:

gitlab回退到指定的commit版本,并覆盖当前

1、切换至指定的commit版本

git reset --hard 281768597f8ec26610a90f3040762317808e24fd

2、强制更新,覆盖当前master,去掉之后的提交

git push origin master --force

-----------------------------------------------------------------------------------------------------------

yum install screen
screen -S vbaupdate   开启一个名字为vbaupdate的screen
 screen -ls 查看screen
screen -r 12607.vbaupdate 连接某个screen
ctrl+a+d 从连接了的screen里退出

-------------------------------------------------------------------------------------------------------

追加文件内容:

cat >>/root/test/append<<EOF
c
EOF

把字母c追加到/root/test/append

追加多行内容到文件:

echo -e "a\nb\nc">>/root/test/append

 -----------------------------------------------------------------------------------------------------------------------

ssh:

ssh-keygen -t rsa -P ''   一路回车生成公私密钥

ssh-copy-id    copy密钥到远程主机

ssh-copy-id root@node02

ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限

netstat  

netstat -anp  查看所有端口

 --------------------------------------------------------------------------------------

grep -r "vs"  ./

搜索目录下所有文件,在文件内容里找vs这个字符串

-------------------------------------------------------------------------------------

vi  搜索替换

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky 

vi windows下回车换行到Linux报错:

:set ff=unix

---------------------------------------------------------------------

查看linux所有用户:

用户:/etc/passwd,/etc/shadow,/etc/group

compgen -u

cat /etc/passwd

filebeat:x:996(uid):1000(gid)::/home/filebeat(家目录):/sbin/nologin

id filebeat
uid=996(filebeat) gid=1000(filebeat) groups=1000(filebeat),4(adm)(逗号分隔的组)

添加用户:

添加一个登录用户:

useradd -m testuser (-m 表示登录用户)

passwd testuser

visudo  添加sudo免密

 useradd -u 1001 elk

id elk
uid=1001(elk) gid=1001(elk) groups=1001(elk)

passwd elk

groupadd redis

useradd -r -g redis -s /sbin/nologin redis

查看所有用户:

cat /etc/passwd

查看所有组:

/etc/group

查明密码加密文件

/etc/shadow

永久性删除用户账号
userdel peter

groupdel peter

ansible批量添加用户:

vi user_list.txt

username:password:uid:gid:description Account:/home/username:/bin/bash

newusers  user_list.txt

密码会自动加密

ansible批量操作:

ansible all-linux -m shell -a " newusers /opt/user.txt " 

ansible all-linux -m shell -a "cd /opt;rm -f user.txt " 

 ----------------------------------------------------------------------------------------------------------------------

sudo

切换用户执行命令

免密码sudo,配置/etc/sudoers文件

使用visudo 命令进行编辑

sudo -s  进入root环境shell

---------------------------------------------------------------------------------------------------------------------------

查找文件

 find / -name "dump.rdb"

---------------------------------------------------------------------------------------------------------

nohup

nohup command >> test.log 2>&1 &

---------------------------------------------------------------------------------------------

yum清缓存

yum clean all 

 yum provides  fuser,查看命令是由哪个包提供的

psmisc-22.20-17.el7.x86_64 : Utilities for managing processes on your system(包名)
Repo : base
Matched from:
Filename : /usr/sbin/fuser

然后  sudo yum install psmisc  就可以安装了

yum,rpm
 yum list installed 查看机器上已经用yum安装了的包
 rpm -ql mysql 查看yum安装位置
 yum repolist all 查看yum源列表
 yum grouplist 查看已安装和可安装的工具包group
 (?centos的一些版本没有源
 yum install epel-release
 ls -lah /etc/yum.repos.d/
 (?rpm -e epel-release
 如果ls -lah /etc/yum.repos.d/找不到epel源,说明之前有安装脏
 需要rpm -e epel-release
 再yum install epel-release
 )
 yum remove mod_wsgi yum删除
  
 rpm:
 -e, --erase=<package>+ erase (uninstall) package 删除
 -i, --install install package(s) 安装
 -v, --verbose provide more detailed output
 -h, --hash print hash marks as package installs (good with -v)
 -l, --list list files in package(with -q)
 -U, --upgrade=<packagefile>+ upgrade package(s) 升级
 -a, --all query/verify all packages
 -q 查询
 安装,升级,删除,查询可组合其他命令选项使用,例子:
 rpm -q logstash 查看某个包是否被安装
 rpm -qa logstash 列出所有已安装的rpm包
 rpm -ql mysql 查看安装位置
 rpm -ivh logstash-2.1.1-1.noarch.rpm 安装某个rpm软件包
 rpm -Uvh logstash-2.1.1-1.noarch.rpm 升级某个rpm包
 rpm -e epel-release 卸载某个已用rpm方式安装的软件

翻页查看:

使用命令rpm -ql kernel-headers-3.10.0-957.21.2.el7.x86_64|less查看安装目录,因安装目录太多故后面加less方便翻页查看

----------------------------------------------------------------------------------------------

fuser -v -m /data

查看 /data目录,被哪些进程占用

sudo lsof /data

lsof  查看目录被哪些程序占用

------------------------------------------------------------------------------

scp

scp elasticsearch-7.16.2-x86_64.rpm username@ip address:/home

----------------------------------------------------------------------------------------------

tips:

While another partition would be located at D:\ on Windows, this other partition would appear in another folder under / on Linux.:

https://www.howtogeek.com/117435/htg-explains-the-linux-directory-structure-explained/

trap命令,定义接受信号后的行为

trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。
trap command signal
它有三种形式分别对应三种不同的信号回应方式。
第一种:
trap "commands" signal-list
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令。
第二种:
trap signal-list
trap不指定任何命令,接受信号的默认操作,默认操作是结束进程的运行。
第三种:
trap " " signal-list
trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种。
※请记住,脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。

------------------------------------------------------------------------------------------------

sed  文本编辑

sed   -i 直接操作指定文件|-e输出到标准输出   '行号 要做的动作'    要操作的文件

替换指定行的内容:

 sed -i '134 s/localhost/192.168.102.155/g' filebeat.yml 

每一行开头加上sudo:

sed -i 's/^/sudo &/g' filebeat.sh  (^表示开头)

4 行之后追加 2 行:

sed -e '4 a newline\nnewline2' testfile


--------------------------------------------------------------------------
脚本:
获取eth0的ip地址
 ifconfig eth0 | grep inet|grep -v inet6 |awk '{print $2}'

ip=$(ifconfig eth0 | grep inet|grep -v inet6 |awk '{print $2}')          #shell中把命令结果赋值给变量   变量名=$(要执行的命令)
echo $ip                                                                                        #使用变量
sed -i "134 s/localhost/$ip/g" /opt/filebeat.yml                              #双引号可以做变量替换,单引号不行

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

进程:

查看某个进程下的线程:

ps -T -p 进程pid

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

常用命令:

获取帮助的地方,优先级从上到下:
 --help命令(脚本或命令 --help)
 脚本里的注释
 程序自带文档
 man 脚本名
  
  
 压缩与解压缩:
 安装:
 apt-get install rar unrar
 wget http://www.rarlab.com/rar/rarlinux-x64-5.4.0.tar.gz
 tar -zxvf rarlinux-x64-5.4.0.tar.gz
 cd rar
 make
  
 使用
 unrar x 文件名
  
  
  
  
  
 程序运行:
 一。& 最经常被用到
 这个用在一个命令的最后,可以把这个命令放到后台执行
 二。ctrl + z
 可以将一个正在前台执行的命令放到后台,并且暂停
 三。jobs
 查看当前有多少在后台运行的命令
 四。fg
 将后台中的命令调至前台继续运行
 如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
 五。bg
 将一个在后台暂停的命令,变成继续执行
 如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
  
 例如:
 不间断在后台运行守护进程
 nohup php test.php > xxx.log 2>&1 &
  
 0 stdin 标准输入
 1 stdout 标准输出
 2 stderr 标准错误
 > 重定向符
  
 crontab:
 * * * * *
 MINUTES Minutes in one hour (0-59)
 HOURS Hours in one day (0-23)
 DAYMONTH Day in a month (1-31)
 MONTH Month in a year (1-12)
 DAYWEEK Day of the week (0-7) where 0 and 7 are sunday
 If you want to schedule your build every 5 minutes, this will do the job : */5 * * * *
 If you want to schedule your build every day at 8h00, this will do the job : 0 8 * * *
 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,
 表示每十分钟执行一次。
 例如,周二到周四每隔两小时的第3和第15分钟执行
 命令:3,15 /2 * 2-4
  
  
  
  
 yum,rpm
 yum list installed 查看机器上已经用yum安装了的包
 rpm -ql mysql 查看yum安装位置
 yum repolist all 查看yum源列表
 yum grouplist 查看已安装和可安装的工具包group
 (?centos的一些版本没有源
 yum install epel-release
 ls -lah /etc/yum.repos.d/
 (?rpm -e epel-release
 如果ls -lah /etc/yum.repos.d/找不到epel源,说明之前有安装脏
 需要rpm -e epel-release
 再yum install epel-release
 )
 yum remove mod_wsgi yum删除
  
 rpm:
 -e, --erase=<package>+ erase (uninstall) package 删除
 -i, --install install package(s) 安装
 -v, --verbose provide more detailed output
 -h, --hash print hash marks as package installs (good with -v)
 -l, --list list files in package(with -q)
 -U, --upgrade=<packagefile>+ upgrade package(s) 升级
 -a, --all query/verify all packages
 -q 查询
 安装,升级,删除,查询可组合其他命令选项使用,例子:
 rpm -q logstash 查看某个包是否被安装
 rpm -qa logstash 列出所有已安装的rpm包
 rpm -ql mysql 查看安装位置
 rpm -ivh logstash-2.1.1-1.noarch.rpm 安装某个rpm软件包
 rpm -Uvh logstash-2.1.1-1.noarch.rpm 升级某个rpm包
 rpm -e epel-release 卸载某个已用rpm方式安装的软件
  
  
  
  
 安装:
 安装rz sz:
 yum install lrzsz
  
  
  
  
  
  
 环境配置
  
 系统相关
 set命令显示当前shell的变量,包括当前用户的变量;
 env命令显示当前用户的变量;
 export命令显示当前导出成用户变量的shell变量。
  
 echo $PATH
 which python
 ln -s /usr/local/bin/python2.7 /usr/bin/python
 (把后者链到前者,使用后者实际上就是使用前者,再比如/data有空间 /opt无空间 就可以 ln -s /data/storage /opt/storage
 当向/opt/storage里写入时 实际上就是向/data/stroage里写入
 )
  
 vim .bashrc
 export GOPATH=$HOME/go //the go path
  
 vim /etc/profile文件 (全局所有用户)
 export GOPATH=$HOME/go
 编辑完/etc/profile文件后,需要执行 source /etc/profile 使之生效
  
  
 语言举例:
 whereis java
 which java (java执行路径)
  
  
 go语音相关:
 go env //the go language env
  
 php环境查看
 可echo出phpinfo()这个函数
 php环境配置
 cd php-5.6.11/ext/zip
 /data1/php/bin/phpize
 ./configure --with-php-config=/data1/php/bin/php-config
  
 apache相关
 apachectl -V //查看编译设置
  
  
 配置JAVA_HOME举例
 查看rpm方式安装的程序路径:
 [root@i-be9r027r jvm]# rpm -qa | grep java
 java-1.8.0-openjdk-1.8.0.51-1.b16.el6_7.x86_64
 java-1.8.0-openjdk-headless-1.8.0.51-1.b16.el6_7.x86_64
 java-1.7.0-openjdk-1.7.0.91-2.6.2.2.el6_7.x86_64
 tzdata-java-2015f-1.el6.noarch
 [root@i-be9r027r jvm]#
 [root@i-be9r027r jvm]# rpm -ql java-1.7.0-openjdk
  
 推导安装路径:
 [root@i-be9r027r jvm]# which java
 /usr/bin/java
 [root@i-be9r027r jvm]# ls -lah /usr/bin/java
 lrwxrwxrwx 1 root root 22 Jan 14 19:34 /usr/bin/java -> /etc/alternatives/java
 [root@i-be9r027r jvm]# ls -lah /etc/alternatives/java
 lrwxrwxrwx 1 root root 46 Jan 14 19:34 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
  
 编辑/etc/profile文件
 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/jre (这个机器应该有调整,JDK的路径较怪异)
 执行source /etc/profile命令
 echo $JAVA_HOME 验证是否配置成功
  
  
  
  
  
  
  
  
 ssh
 1.在A机下生成公钥/私钥对。
 [chenlb@A ~]$ ssh-keygen -t rsa -P ''
 2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。
 [chenlb@A ~]$ scp .ssh/id_rsa.pub chenlb@192.168.1.181:/home/chenlb/id_rsa.pub
 3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。
 [chenlb@B ~]$ cat id_rsa.pub >> .ssh/authorized_keys (这一步有可能加入文件内后,没有换行,导致不生效,注意检查)
 [chenlb@B ~]$ chmod 600 .ssh/authorized_keys (这一步不要忘了)
 脚本:
 for i in 1 2 3;do ssh-keygen -t rsa -P '';echo $i;scp .ssh/id_rsa.pub root@xx.xx.xx.$i:/root/id_rsa.pub;
 ssh xx.xx.xx.$i "cat /root/id_rsa.pub >> .ssh/authorized_keys";echo $i;done
  
 ssh非密码形式,文件钥形式:
 ssh -i ~/.ssh/keyfile root@xxx.xxx.xxx.xxx
  
 提示Enter passphrase for key时解决:
 http://www.cnblogs.com/lovingprince/archive/2011/08/04/2166213.html
  
  
 ------------------------------------------------------------------------------------------------
 centos:
 CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。
 1、原来的 service 命令与 systemctl 命令对比
 daemon命令 systemctl命令 说明
 service [服务] start systemctl start [unit type] 启动服务
 service [服务] stop systemctl stop [unit type] 停止服务
 service [服务] restart systemctl restart [unit type] 重启服务
 此外还是二个systemctl参数没有与service命令参数对应
 status:参数来查看服务运行情况
 reload:重新加载服务,加载更新后的配置文件(并不是所有服务都支持这个参数,比如network.service)
 应用举例:
  
 #启动网络服务
 systemctl start network.service
  
 #停止网络服务
 systemctl stop network.service
  
 #重启网络服务
 systemctl restart network.service
  
 #查看网络服务状态
 systemctl status network.serivce
 2、原来的chkconfig 命令与 systemctl 命令对比
 2.1、设置开机启动/不启动
 daemon命令 systemctl命令 说明
 chkconfig [服务] on systemctl enable [unit type] 设置服务开机启动
 chkconfig [服务] off systemctl disable [unit type] 设备服务禁止开机启动
  
  
  
  
  
  
  
 ---------------------------------------------------------------------------------------------------
  
 跟踪
 tcpdump -i bond0 port 8085 -s 0 -w - | strings
  
 strace -p pid we can get the process run infometion
  
  
  
  
  
  
  
 常用命令
  
 groupadd hadoop
 useradd hadoop -g hadoop
  
 scp
 “scp”调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。
 scp -i ~/.ssh/dev-key .ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/root/id_rsa.pub(文件钥形式)
 scp .ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/home/sk77/id_rsa.pub(密码形式)
  
  
 kill
 kill -term(-15) 关闭程序,给程序资源回收的机会和时间
 kill -kill(-9) 直接强制杀死
 kill -0 Check access to pid 通常可在编写脚本时使用,用以检查进程是否运行
 参考文档:http://www.cyberciti.biz/faq/unix-kill-command-examples/
 通常,应该发送15,等一两秒钟,如果没效果,发送2,如果还不行,发送1。如果还不行,那你应该把那个程序删掉,因为那个程序写的太烂了!
 不要使用kill -9。不要用收割机来修剪花盆里的花。
 总之,在使用kill -9前,你应该先使用kill -15,给目标进程一个清理善后工作的机会。(进程也许无法捕捉或直接忽略SIGKILL信号,但它们可以,
 通常也是能够捕捉SIGTERM信号的。)如果你不留机会让进程完成清理工作,它们会留下一些不完整的文件或状态,当系统重启时,
 程序将无法理解这些状态。
 strace/truss,ltrace和gdb都是查看一个卡住的进程因何卡住的好工具。(Solaris里的truss -u非常好用;)Solaris里还有一些
 非常有用的/proc相关的工具,有一些已经被移植到了Linux上。
  
  
 所谓的将程序重启,比如logstash,也就是
 stop && start,也就是
 kill -15 pid && /opt/logstash/bin/logstash agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}
  
  
  
  
 nohup,screen,& 三者的用法:
  
 1.当交互bash退出的时候,比如exit或logout,它会发送SIGHUP到它的所有作业,作业下的所有子进程都会收到SIGHUP。
 2.当终端挂断的时候,终端驱动会发送SIGHUP到它的控制进程,通常我们登录后控制进程就是bash,它收到SIGHUP,然后退出,退出的过程参1
 3.显然不想让一个进程被bash发送的SIGHUP中止通常用三种方法:
 a.自己处理SIGHUP
 b.忽略SIGHUP(用nohup命令或disown -h)
 c.脱离交互bash的作业(比如用disown,在脚本中发起后台命令,在nestedsubshell中发起后台命令)
  
 在交互bash里使用了&的启动命令,和在脚本里使用&的启动命令一样吗?现在确定的是,在脚本里启动,就属于后台启动了,不属于当前运行脚本的
 交互bash了。那直接在当前交互bash里,使用了&的命令呢?
 当一个会话的终端中断后,系统只会给当前会话的前台进程组发送SIGHUP信号,如果启动进程时,让进程在后台去执行,也是执行的时候后面加一个&,
 也可以自己去重定向输入输出,会话的终端中断时,后台的进程组是不会收到SIGHUP信号,也就不会被系统kill掉(再揣摩实验下,用./bin/kibana &
 实验了一下,只用&,在终端里不是在脚本里,看终端关闭后,kibana进程是不是还在运行。测试结果,关闭终端后,只用&,kibana进程仍然运行)
  
 screen应该是和在脚本里使用&一个道理,都是后台启动。screen的好处是可以调出查看。nohup就是忽略SIGHUP了。
  
  
  
  
 ----------------------------------------------------------------------------------------------------------------------
  
 网络:
 ifconfig
 ping
 telnet
 nslookup
  
 节点(node):具有ip的设备
 server
 client
 网卡
 网口: eth0 ,lo等
 拓扑
 路由
 网关 :具有两个以上的网络接口, 可以连接两个以上不同的网段的设备
 局域网LAN 内网
 广域网WAN 外网
  
 TCP/IP:
  
 链路层:
 LAN:Ethernet
 WAN:
 arp(ip地址与MAC地址的对应,mac地址网卡出厂时就会设定唯一的)
 mac数据包,网络上数据传输的最小单位,MAC数据包跨过路由器,经过不同的网域,那么来源与目的的硬件地址(mac地址)就会跟着改变
 mac地址可由ifconfig命令查看
  
 网络层:
 IP:
 ip数据包内容:
 TTL: IP 封包通过一个路由器时, TTL 就会减一,当 TTL 为 0 时,这个封包将会被直接丢弃
 来源地址ip
 目的地址ip
 协议Protocol:TCP,UDP,ICMP等
 IP (Internet Protocol) 其实是一种网络封包,而这个封包的表头最重要的就是那个32位的来源与目标地址!
 为了方便记忆,所以我们也称这个 32 bits 的数值为 IP 网络地址就是了,
 常用的是点分十进制记法,如127.0.0.1,192.168.0.1
 最小:0.0.0.0 最大255.255.255.255
  
 ip可以分Net_ID(网段号码)与Host_ID(主机号码)两部分
 同一个网域的定义是『在同一个物理网段内,主机的 IP 具有相同的 Net_ID ,并且具有独特的 Host_ID』,
 那么这些 IP 群就是同一个网域内的 IP 网段啦!
 什么是物理网段呢?当所有的主机都是使用同一个网络媒体串在一起, 这个时候这些主机在实体装置上面其实是联机在一起的,
 那么就可以称为这些主机在同一个物理网段内了!
 同时并请注意,同一个物理网段之内,可以依据不同的 IP 的设定,而设定成多个『IP 网段』
 Host_ID 在二进制的表示法当中,全为 0 表示整个网段的地址 (Network IP),而全为 1 则表示为广播的地址 (Broadcast IP)
  
 同网段可透过 IP 广播传递数据(通过CSMA/CD走MAC)
  
 在同一个物理网段之内,如果两部主机设定成不同的 IP 网段,则由于广播地址的不同,导致无法透过广播的方式来进行联机。
 此时得要透过路由器 (router) 来进行沟通才能将两个网域连结在一起。
  
 五种IP分级在十进制的表示:
 Class A : 0.xx.xx.xx ~ 127.xx.xx.xx
 Class B : 128.xx.xx.xx ~ 191.xx.xx.xx
 Class C : 192.xx.xx.xx ~ 223.xx.xx.xx
 Class D : 224.xx.xx.xx ~ 239.xx.xx.xx
 Class E : 240.xx.xx.xx ~ 255.xx.xx.xx
 内网,局域网:(
 IPv4地址分为A、B、C、D、E五类,出去特殊作用的D、E两类,剩下的A、B、C三类地址是我们常见的IP地址段。
 A类地址的容量最大,可以容纳16777214个主机,B类地址可以容纳65534个主机,C类地址可以容纳254个主机。
 在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段,
 作为私有地址,供组织机构内部使用。
 这三个地址段分别位于A、B、C三类地址内:
 A类地址:10.0.0.0--10.255.255.255
 B类地址:172.16.0.0--172.31.255.255
 C类地址:192.168.0.0--192.168.255.255
 所以局域网在选取使用私有地址时,一般会按照实际需要容纳的主机数来选择私有地址段。
 常见的局域网由于容量小,一般选择C类的192.168.0.0作为地址段使用,一些大型企业就需要使用B类甚至A类地址段作为内部网络的地址段。
 )
  
  
  
  
  
 路由器:
 连接不同网段的设备
  
 ICMP(ping命令与tracert命令使用该协议)
  
 传输层:
 TCP
 UDP
  
 应用层:
 HTTP
 DNS
 SSH
 telnet
 NFS
 FTP
 SMTP
 POP3
  
  
  
 CSMA/CD(同网段时):
 多点传输 (Multiple Access):
 我的计算机明明没有被入侵,为何我的数据会被隔壁的计算机窃取?
 就因为多点传送,原本其他node收到数据不是给它的就丢弃,
 但它为了窃取,利用监听软件把该丢弃的数据收集下来了
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 ip:http://os.51cto.com/art/201406/441461.htm
  
  
  
 内核:
  
 modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。 modprobe可载入指定的个别模块,或是载入一组相依的模块。
 modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
 语法 modprobe(选项)(参数)
 选项 -a或--all:载入全部的模块;
 -c或--show-conf:显示所有模块的设置信息;
 -d或--debug:使用排错模式;
 -l或--list:显示可用的模块;
 -r或--remove:模块闲置不用时,即自动卸载模块;
 -t或--type:指定模块类型;
 -v或--verbose:执行时显示详细的信息;
 -V或--version:显示版本信息;
 -help:显示帮助。
  
  
 ----------------------------------------------------------------------------------------------------
 linux查看相关
  
 硬盘:
 /etc/fstab fsck、mount、umount的等命令都利用该程序
 fdisk -l 查看数据盘信息
 df -h
 df -lhT 查看磁盘容量及文件系统类型,没有分区和格式化数据盘之前,无法看到数据盘
 fdisk /dev/vdb 对数据盘进行分区
  
  
 磁盘分区,格式化,挂载步骤:
 输入命令fdisk -l查看您的数据盘信息,注意:在没有分区和格式化数据盘之前,使用df -h 命令是无法看到数据盘的。
 3) 执行以下命令,对数据盘进行分区。
 fdisk /dev/vdb
 按照界面的提示,依次输入“n”(新建分区)、“p”(新建扩展分区)、“1”(使用第1个主分区),两次回车(使用默认配置),输入“wq”(保存分区表),回车开始分区。
 这里是以创建1个分区为例,开发者也可以根据自己的需求创建多个分区。
 使用“fdisk -l”命令,即可查看到,新的分区vdb1已经创建完成。
 5) 分区后需要对分好的区进行格式化,您可自行决定文件系统的格式,如ext2、ext3等。本例以“ext3”为例:
 使用下面的命令对新分区进行格式化。
 mkfs.ext3 /dev/vdb1
 6) 使用以下命令创建mydata目录并将分区挂载在该目录下:
 mkdir /mydata
 mount /dev/vdb1 /mydata
 最后用以下命令查看
 df -h
 出现如图信息则说明挂载成功,即可以查看到数据盘了。
 7) 如果希望云服务器在重启或开机时能自动挂载数据盘,必须将分区信息添加到/etc/fstab中。如果没有添加,则云服务器重启或重新开机后,都不能自动挂载数据盘。
 使用以下命令添加分区信息:
 echo '/dev/vdb1 /mydata ext3 defaults 0 0' >> /etc/fstab
 使用以下命令查看
 cat /etc/fstab
 出现如图信息则说明添加分区信息成功。
  
  
 cpu:
 cat /proc/cpuinfo
  
 内存:
 cat /proc/meminfo
  
 版本:
 cat /proc/version
 cat /etc/redhat-release
  
  
 查看所有运行服务:
 service --status-all
  
 进程
 查看进程树: pstree -p 进程号
  
  
  
 ---------------------------------------------------------------------------------------------
 编译安装:
  
 # yum groupinstall "Development tools"
 # yum install curl-devel expat-devel zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel python-devel libffi-devel libxml2-devel openssl-devel libxslt-devel gcc libgcc glibc
 以上这些必要的基础依赖,在以后其他组件的安装及使用过程中需要用到,所以要提前装好
 对于基础依赖,要有个共识印象
  
 编译安装php apache http://php.net/manual/zh/install.unix.apache2.php
  
 apache:
 yum groupinstall "Development tools"
 yum install curl-devel expat-devel zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel python-devel libffi-devel libxml2-devel openssl-devel libxslt-devel gcc libgcc glibc
 tar -zxvf httpd-2.4.27.tar.gz
 cd httpd-2.4.27
 wget https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
 wget http://www-us.apache.org/dist//apr/apr-1.6.2.tar.gz
 tar -zxvf apr-util-1.5.4.tar.gz
 tar -zxvf apr-1.6.2.tar.gz
 cp -R apr-1.6.2 httpd-2.4.27/srclib/
 cp -R apr-util-1.5.4 httpd-2.4.27/srclib/
 cd httpd-2.4.27/srclib/
 mv apr-1.6.2 apr
 mv apr-util-1.5.4 apr-util
 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
 tar -zxvf pcre-8.41.tar.gz
 cd pcre-8.41
 ./configure --prefix=/usr/local/pcre
 ./configure --enable-so --with-included-apr --with-pcre=/usr/local/pcre
 make
 make install
  
 php:
 yum list installed |grep php (把原有的yum安装脏都干掉)
 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-pdo-mysql --with-curl
 cp php.ini-development /usr/local/lib/php.ini
  
 (php --ini 查看php用哪个ini
 php-config 查看php配置
 )
  
  
  
  
  
  
  
 例如编译安装apche,报configure: error: pcre-config for libpcre not found
  
 这样安装依赖:
 下载源码
 1. Download PCRE from PCRE.org
 确定安装路径
 2. Compile it with a prefix and install it:
 ./configure --prefix=/usr/local/pcre
 make
 make install
 带上所需要依赖的安装路径
 3. Go back to where your Apache installation is and compile Apache with PCRE:
 --with-pcre=/usr/local/pcre
  
 安装依赖时,小组件的版本也要注意,比如安装httpd2.4时,下了最新的apr-util1.6不行,需要apr-util-1.5.4
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值