linux
开机会自动执行的脚本:
/etc/rc.local -> rc.d/rc.local (这是自定义的开机初始化)
实际上,所有开机先运行的全在/etc/rc.d下,比如/etc/rc.d/init.d/network启动网络
注意给 rc.d/rc.local 执行权限
-----------------------------------------------------------------------------------
获取当前日期:
date
获取当前时间戳
date +%s
时间戳转日期
date -d @1654263019
指定日期转换成时间戳
date -d '2021-03-01 17:49:23' +%s
----------------------------------------------------------------------------
查看文件md5:
md5sum filename
执行命令,前边执行成功,后面才执行:
--------------------------------------------------------------------------
查看目录占用空间大小
sudo du -h --max-depth=1 /var/log/esets
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 //定义环境变量并赋值
-------------------------------------------------------------------------------------------------------------------------
~ 符号 家目录
[root@test1 ~]# echo ~
/root
--------------------------------------------------------------------------------------------------
更改hostname
hostname -b test1
-----------------------------------------------------------------------------------------------------------------------
curl
获取公网地址:
curl ipinfo.io
curl get请求:
curl -v -X GET 192.168..16:8080/v1/engineControl?addr=192.168.4\&dirID=345\&engine=f (注意&符号在Linux shell 命令行下的转义)
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 update perl-Image-ExifTool
| 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命令,定义接受信号后的行为
------------------------------------------------------------------------------------------------
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 | |
| crontab指定用户,-u选项 crontab -e -u www | |
| 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 |
浙公网安备 33010602011771号