linux book 已迁移至语雀
已迁移至语雀 20220725 https://www.yuque.com/puredream/windsnow/linux_book
安装
CentOS 7系统安装配置图解教程==>https://www.cnblogs.com/yaohong/p/7240387.html
简单小命令
echo 'abc' > a.out 重写a.out中a文件为abc内容
echo 'abc' >> a.out 追加a.out中a文件为abc内容 echo -e 命令详解==>https://www.cnblogs.com/karl-python/p/9261920.html (补充: gitbash命令行中使用 echo -e 'abc\r' >> a.out 即可实现\r\n,因为\n会自动添加)
wget 下载命令
#下载免https认证
wget url --no-check-certificate
#下载并重命名
wget -O filename url
#断点续传
wget -c url
#后台下载
wget -b url
如果是https则需要使用--no-check-certificate
wget --no-check-certificate -b https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.10.14-ce.0.el6.x86_64.rpm
#查看进度
tail -f wget-log
#下载多个文件
cat filelist.txt
url1
url2
wget -i filelist.txt
nc命令批量检测网络是否申通
test.txt
www.baidu.com 80
www.cnblogs.com 443
test.sh
cat ./test.txt | while read line
do
nc -w 1 $line & 1
if [ $? -eq 0 ]
then
echo $line ok
else
echo $line fail
fi
done
chmod +x test.sh
./test.sh
#cat /proc/version 查看Linux版本
#startX 切换图型界面
#shutdown -h now 关机
#shutdown -r now 重启(或者#reboot)
#pwd 当前目录
参考:http://www.cnblogs.com/ngnetboy/archive/2012/10/08/2715555.html
$ls -a 显示隐藏目录
$ls -l 显示长列表目录
$ls -lrt long:长列表 reverse:逆序 time:时间
$ls -lht 显示当前目录下所有文件大小
$ls -Slhr Size:文件大小 long:长列表 human:人类的理解 reverse:逆序
$du -hs download 查看download目录大小 (不显示子目录和子文件)
$du -h download 查看download目录及子目录大小
$du -ha download 查看download目录及所有子目录和所有子文件
$du -ha download --max-depth=1 查看download目录及一级子目录大小
$df -h 查看磁盘状态
$df -k 或 df -m 查看分区被哪些文件夹关联着
cp -r srcDir destDir 复制srcDir目录及其下所有内容到destDir目录下 举例: cp -r /home/king/srcDir /home/king/destDir
cp -a srcDir destDir 复制srcDir目录及其下所有内容到destDir目录下 举例: cp -r /home/king/srcDir /home/king/destDir
mk dir 建目录
mkdir -p project/{a,b,c,d}/src -p 建多层目录 , {a,b,c,d}建多个文件夹
rm dir 删除文件及目录
rm -r dir 移除目录及其它所有内容
rm -rf dir 删除文件及目录(子文件也一起删 -r 递归 -f 强制 )
mv dir 移动文件和改文件名
- 改文件 | 举例: mv old.txt new.txt
- 移动 | 把srcDir目录及其下所有内容移动到king目录下,在king目录下生成/king/srcDir 举例: mv /home/king/srcDir /home/king/
- 移动 | 把当前目录下多个目录移动到King目录下,在king目录下生成/king/aDir /king/bDir 举例: mv ./aDir ./bDir /home/king/
kill -9 pid 强制杀死某一进程
kill -9 pid1 pid2 pid3 pid4 强制杀死某一批进程
touch a.txt 建空文件
more a.txt 空格下下翻页
tar -cvf etcBak.tar etc/ 打包etc (不压缩)
tar -xvf etcBak.tar -C /tmp 解tar包的内容到/tmp目录
tar 带不带z参数要看那个包是不是 gz结尾的 , z是压缩的意思
rename test1.txt test.txt test1.txt
`原字符串:将文件度名问需要替换的字符串;
目标字符串:将文件名中含有的原字符替换成目标字符串;
文件:指定要改变文答件名的文件列表。`
grep 技巧:
ps -ef |grep webAppName | grep -v grep | awk '{print $2;}' 取webAppName进程pid (高频) (grep -v grep 为了去除包含grep的进程行 ,避免影响最终数据的正确性 )
grep -nr "main" dir 查找dir下的所有文件,并查出"main"关键字所在的行
ps -ef|grep weblogic ps -ef 是查看所有的进程的 然后用grep筛选出你要的weblogic的信息, |为管道命令,即把前一个结果集交给|后面的命令去处理
ps -aux | grep java ps -aux 是查看所有java进程的信息,包括cpu占用,内存开销
ps aux --sort -rss 查看内存/ cpu占用排行榜 (使用ps aux 查看系统进程时,第六列即 RSS列显示的就是进程使用的物理内存) http://t.zoukankan.com/gaoyuechen-p-7999076.html
grep -C 2 "patternWord" file.txt 查到 patternWord 所在行的前后2行一起显示.
ifconfig | grep -C 2 "Link encap" 查到 Link encap 所在行的前后2行一起显示.
grep -c beauty server.log 查看beauty字符串在server.log中出现次数
grep -o 'beauty' server.log | wc -l 查看beauty字符串在server.log中出现次数,同上(-o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出。这样只要统计输出的行数就可以知道这个字符出现的次数了。)
grep "#" -v httpd.conf > ./result.txt 查找httpd.conf中无#号的行,并把结果输出到result.txt中 (-v 代表不包含) ( ps -ef | grep
查看进程的安装目录或启动位置,如查看redis的启动文件位置
先用 ps -ef |grep redis后得到 pid , 再用 ls -l /proc/pid/cwd
linux中grep命令的用法==>https://www.cnblogs.com/flyor/p/6411140.html
awk技巧:
Linux awk==>https://www.cnblogs.com/virgosnail/p/11103651.html
awk基础三语法
- awk '{ action }' {filenames}
- awk '{ pattern + action }' {filenames}
- awk -F '分隔符' { action }
awk '{print $0}' /etc/passwd //输出每一行内容
awk '{print "a"}' /etc/passwd //输出相同行数的行,一行只有一个a字母
awk -F":" '{print $1}' /etc/passwd //输出每一行的第一个字段,分行输出
awk -F: '{print $1; print $2}' /etc/passwd //将每一行的前二个字段,分行输出,进一步理解一行一行处理文本
awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd //输出字段1,3,6,以制表符作为分隔符
cat /etc/passwd 查看有哪些用户
我的生产常用语句 :
| 抓取keyword前后100后,合计200行 | grep -C 100 "keywork" server1_2016-12-09.out |
| 从out.log尾向前1000行处,使用翻页往后翻 | tail -n 1000 out.log |more -100 |
| 从头向尾查询指定关键字的搜索方式 | 执行命令: vi nohup.out 输入以下回车: /error 按n查找下一个,按N(大写)查找上一个 |
curl http://kingtool.top/kingtool/httptest?a=1&b=2 通过get方式获取返回报文 (curl -I url ,只提取返回中的head信息显示到console)
curl -X post http://kingtool.top/kingtool/httptest?a=1 通过post方式获取返回报文
curl http://mywebsite.com/index.php?a=1&b=2&c=3
curl 的用法指南==>http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
$_GET只能获取到参数a , 由于url中有&,其他参数获取不到,在linux系统中& 会使进程系统后台运行 必须对&进行下转义才能$_GET获取到所有参数 curl http://kingtool.top/kingtool/httptest?a=1\&b=2
alias bobo='ll' 设置一个别名叫bobo,可以直接执行 (alias -p 查看所有别名) 参考: Linux系统设置命令别名==》https://blog.csdn.net/zyz511919766/article/details/22664745
# 新建/etc/profile.d/alias.sh脚本,
# source /etc/profile 更新配置 ,
# 更新成功后 , 会自动设置别名 ,为arthas起别名,方便直接使用arthas,arthas2,arthas3命令启动
alias arthas='java -jar /data/arthas/arthas-boot.jar'
alias arthas2='java -jar /data/arthas/arthas-boot.jar --telnet-port 22201 --http-port -1'
alias arthas3='java -jar /data/arthas/arthas-boot.jar --telnet-port 22202 --http-port -1'
alias 显示系统当前定义的所有alias
在.bashrc尾部配置
alias kingsls='ls -lrt' 给ls -lrt设置别名为kingsls,这样直接输入kingsls就可达到ls -lrt效果
以下为启动base_domain的start_weblogic别名,特别方便
alias start_weblogic='nohup /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.sh > $HOME/start_weblogic.nohup 2>&1 &'
生产日志维护
分割
大文件分割,每个分割文件1024m (1g)
split -b 10m -d large_file.log new_file_prefix
压缩
zip target.zip src.log
zip -r target.zip ./* #将当前目录下的所有文件和文件夹全部压缩成target.zip文件,-r表示递归压缩子目录下所有文件
unzip -d /data/target src.zip #把src.zip文件解压到 /data/target/ 目录
我的高频分割/压缩语句
#打印将当前目录下的文件分割成1024M等分的语句
ls | awk '{print " split -d -b 1024M " $1 " " $1 "_" }'
#打印将当前目录下的所有文件压缩的语句
ls | awk '{print " zip -r " $1 ".zip " $1 }'
curl 发送POST请求
curl -X POST \
-H "Content-Type: application/json" \
-d '{"versionNum": 1}' "http://com.xxx.com:10000/api/getPerson"
修改主机名和映射
修改hostname,修改映射,重启三步骤即可
[root@localhost ~]#vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=virtualboxlinux2
[root@localhost ~]#vi /etc/hosts
127.0.0.1 localhost virtualboxlinux2 localhost4 localhost4.localdomain4
::1 localhost virtualboxlinux2 localhost6 localhost6.localdomain6
[root@localhost ~]#reboot
service network restart 重启网络服务
Linux软连接和硬连接--https://www.cnblogs.com/413xiaol/p/6986473.html
ln 源 目标 ( ln /test/src.conf dest.conf 即在当前目录创建了dest.conf 硬链接文件, 源和目标必须是文件 ,所有硬链接被删后文件真从磁盘删除 )
ln -s 源 目标 ( ln -s /etc/inittab inittab 即在当前目录创建了inittab软链接文件, 源和目标也可以是文件夹, 软链接相当于windows快捷方式 )
find /home/bobo/ -name a.txt 查找指定目录下的文件名 (Linux查找匹配操作(find、grep)==>https://www.pianshen.com/article/6671523577/)
find /home/bobo/ -amin -10 查找指定目录下10分钟内存取的目录或文件 find链接
find /home/bobo/ -cmin -10 查找指定目录下10分钟内修改的目录或文件
find /home/bobo/ -size +10k 查找指定目录下大于10k的文件
mk 两下tab 命令补全,把以mk打头的命令全列出来
ifconfig 查看本机ip (注意不是 ipconfig )
service network restart 重启网络
man(manual) = windows的help 举例: man grep
last -a 查看最近登录成功用户的ip
lastb -a 查看最近登录失败的用户的ip
chomd命令
chmod a=rwx file 和chmod 777 file效果相同
chmod ug=rwx,o=x file和chmod 771 file效果相同
综上chmod +x 是将文件状态改为可执行,而chmod 777 是改变文件读写权限。
用户和组命令
ls -ahl 查看文件的所有组(谁创建,谁就是所有者)
chown userName fileName 改变该文件的拥有者
chown userName ./abc 改变abc这个目录的所有者
chown -R userName ./abc 改变abc及其子目录的所有者
chown -R userName:groupName abc 改变abc及其子目录的所有者及组
usermod -g groupName userName 改变用户所有组
usermod -d defaultDirectory userName 改变用户登录时的默认目录
linux强制踢出已登录的用户==>https://www.cnblogs.com/asif/p/4930229.html pkill -kill -t pts/1
#groupadd groupName 添加组
#groupdel groupName 删除组
#chgrp groupName fileName 修改文件所在组
#useradd -g groupName userName 添加用户到指定组
#passwd king // 之后直接新增or修改密码
#userdel -r king 删除用户及目录
cat /etc/group 查看linux所有组后展示如下:
groupName:x:503 其中503代表组号,x即为加密密码
cat /etc/passwd 查看linux所有用户后展示如下: userName:x:505:504: :/home/userName:/bin/bash
| 用户名 | 密码 | 用户id | 组id | 注释 | 用户根目录 | shell解析器 |
| username | x | 505 | 605 | /home/userName | /bin/bash |
-rwxrw-r-- 1 userName groupName 1213 Feb 2 09:39 abc.txt
| -rwxrw-r-- | 1 | userName | groupName | 1213 | Feb 2 09:39 | abc.txt |
| 权限 | 连接文件数 | 文件大小 | 最后修改时间 | 文件名 |
-rwxrw-r--解释:
| - | rwx | rw- | r-- |
| 文件类型 | 文件所有者的权限 | 文件所在组的权限 | 其它组的权限 |
| -文件 | r=100=4代表可读 | ||
| d文件夹 | w=010=2代表可写 | ||
| l链接 | x=001=1代表可执行 |
chmod 700 filename 意为改变该目录的权限为 只有当前用户有读写执行权限,用户所在组及其它组都没有权限.
sudo
sudo (super user do)
直接输入 visudo 命令, 即可修改Suderos文件以允许哪些用户可以执行sudo操作, 至于 Suderos 文件在哪无须关心
username ALL=(ALL) ALL //为用户"username"授予sudo访问权
%wheel ALL=(ALL) ALL //为属于wheel用户组的所有用户授予sudo访问权
之后就可以使用"username"用户执行 sudo reboot 等需要管理员权限的操作了
top命令
top和ps一样都用于展示当前的进程状况.差异在于top可隔一段时间刷新进程结果
top -b 显示所有进程
top -d 10 每隔10秒刷新进程
| 命令 | 说明 |
| top+enter之后输入c | 可列出所有进程的启动命令 |
| top+enter之后输入u+用户名 | 可只列出指定用户的进程 |
| top+enter之后输入k+pid | 可杀死指定pid的进程 |
| top+enter之后输入1 | 显示所有cpu占用百分比列表 |
| top+enter之后输入f | 可配置显示列 |
| shift+p 按cpu排序 | 按cpu排序 |
| shift+m 按memory排序 | 按memory排序 |
| top 之后 按E | 可切换显示单位 (高频使用为 top | m | e ) |
top -H -p "PID" 查看某个进程内部线程占用情况分析 (Linux top命令中CPU信息的详解(转)==>https://www.cnblogs.com/ajianbeyourself/p/8185973.html)
那么怎么判断当前内存使用情况出现了异常呢?有下面几点供参考:
Mem free的值比较小,并且buff/cache的值也小
free的值比较少并不一定代表有问题,因为Linux会尽可能多的将内存用于page cache,但是如果buff/cache的值也小,就说明内存吃紧了,系统没有足够多的内存用于cache,如果当前服务器部署是一个需要频繁的读写磁盘的应用,如FTP服务器,那么对性能的影响将会非常大。
Swap used的值比较大,
这种情况比上面的更严重,正常情况下swap应该很少被使用,used值比较大说明交换空间被使用的比较多,如果通过vmstat命令看到swap in/out的比较频繁的话,说明系统内存严重不足,整体性能已经受到严重影响
Linux内存管理==>https://segmentfault.com/a/1190000008125006
lsof安装与使用
yum install lsof 后 ,使用lsof查看进程占用文件
lsof -p "PID" 查看进程使用了哪些相关文件 (list open files是一个列出当前系统打开文件的工具)
netstat命令
显示网络状况,如目前连接,数据包传递,路由表内容等
netstat -an 按一定顺序排显示网络结果
netstat -anp 把网络结果和pid一并展示出来 (windows使用 netstat -ano可以显示PID)
netstat -ant|grep ESTABLISHED|wc -l 当前并发的连接数 (注意该命令netstat -ant 在windows和linux下通用)
netstat -lnp|grep 80 查看哪此程序占用着80端口
ulimit -a 查看最大open files等限制
vmstat -s 显示实时的和平均的统计,覆盖CPU、内存、I/O等内容
1、查看发包的端口
netstat -tu -c -c代表每隔一定时间获取
2、查看端口的进程
netstat -tunlp|grep 端口号
lsof -i:端口
3、根据进程查看执行路径
ls -l /proc/6044
4、杀掉进程
kill -9 pid
启停java服务脚本
(启停脚本)
start.sh
serverName=order-service
version=0.0.1-SNAPSHOT
ps -ef |grep $serverName
nohup java -Xms256m -Xmx512m -jar $serverName-$version.jar --spring.profiles.active=test 2>&1 &
tail -f nohup.out
stop.sh
serverName=order-service
APP_PID=`ps -ef |grep $serverName|grep -v grep | awk '{print $2;}'`
echo "APP_PID is :"$APP_PID
if [[ -n $APP_PID ]];then
echo "execute command | kill -9 "$APP_PID
kill -9 $APP_PID
appPid2=`ps -ef |grep $serverName|grep -v grep | awk '{print $2;}'`
echo "after kill -9 action , the appPid is :"$appPid2
fi
route命令
traceroute www.baidu.com 用来检测数据包到百度网 在网络上的传输过程. (可追踪路由)
iptables命令
使用 curl -L ip.tool.lu 查看本机ip , ip.tool.lu为在线互联网服务
如果iptables不起作用,可以偿试/sbin/iptables
自己的iptable相关篇: 用防火墙iptables配置指定IP才能访问redis服务
iptables详解 iptables用法简介 关于iptables添加规则不生效的问题
- 只允许IP为192.168.0.1到192.168.0.255的 IP 能访问redis服务,我的win10 所在IP为192.168.0.45
- 其它所有IP禁止访问6379到6399端口
- 保存IP 策略,让重启以后也能生效
- 查看iptables规则
[root@localhost bin]#iptables -I INPUT -s 192.168.0.1/192.168.0.255 -p tcp --dport 6379:6399 -j ACCEPT
[root@localhost bin]#iptables -A INPUT -p tcp --dport 6379:6399 -j REJECT
[root@localhost bin]#service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
[root@localhost bin]#service iptables status
部分参数解释 -I : 添加到头部 -A: 添加到尾部
因为规则是按从头到尾匹配优先级执行的,所以 REJECT要追加到尾部,从而让ACCEPT先匹配,不然会导致Connection 问题
http://blog.csdn.net/chiuse/article/details/54019630
http://www.cnblogs.com/meiyu2016/p/5932409.html
其它不常用命令
ls -lR /home/centos/tool/redis-3.2.4 |grep "^-"|wc -l 统计文件夹 /home/centos/tool/redis-3.2.4 下文件的个数,包括子文件夹里的
cal 2016 查看2016年的月历
lscpu 查看cpu配置
hostname 查看主机名
运行级别
1. 单用户--只有1级别户启动时忽视inittab文件加载
3. 多用户有网
5. 图型界面
修改系统启动时的运行级别 /etc/inittab 中有一行 id:5:init default: (修改红色字体即可)
如果进不了系统,就切单用户去修改一些文件. 在系统启动时按e,选第二启动项,在root=LABEL=/后面输入"空格1" 就能进入单用户模式. (有时候未必出现root=LABEL=/ ,直接在未尾加"空格1"也行)
runlevel 查看当前运行级别
Linux系统启动过程如下:
a) BIOS自检
b) 启动GRUB/LILO
c) 运行LINUX内核并检测硬件
d) 运行系统的第一个进程
e) init 读取系统引导配置文件/etc/inittab进行初始化
f) /etc/rc.d/rc.sysinit系统初始化脚本 (rc.d是runlevel control directory的缩写)
g) /etc/rc.d/rcX.d/[KS]* -根据运行级别X配置服务
终止以"K"开头的服务
启动以"S"开头的服务
h) /etc/rc.d/rc.local 执行本地特殊配置
i) 其它特殊服务
linux桥接联网配置
禁止linux休眠,屏保
## 修改配置文件 vi /etc/X11/xorg.conf 添加以下内容
Section "ServerFlags"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
EndSection
Section "Monitor"
Option "DPMS" "false"
EndSection
## 重启Linux系统即可
让CentOS在同一个窗口打开文件夹
打开任意一个文件夹-->编辑-->首选项-->行为-->总是在浏览器中打开 (这在ubunto 这是默认勾选的)
重定向命令
ls -l > temp.out 把结果集写入到temp.out文件中(不存在则新建)
ls -l >> temp.out 把结果集追加到temp.out文件尾部
vi使用
cat fileName 只能查看,不能修改
| 命令 | 解释 |
| vi | hello.java |
| i | 进入编辑模式 |
| esc | 进入命令模式 |
| wq | 保存 |
| q! | 不保存 |
linux /etc/profile ~/.bash_profile 区别与联系
/etc/profile 系统整体设置
~/.bash_profile 用户个人设置( 在客户端使用 . ~/.bash_profile 重载) (~/.bash_profile仅在以交互式登录模式启动时由bash提供。这通常仅在你登录控制台(Ctrl+ Alt+ F1.. F6)或通过连接时ssh。)
gcc编译c 及运行c
CentOS 7.3安装详解==>https://blog.csdn.net/zhangym199312/article/details/75196255
centos提示database disk image is malformed解决方法
gcc 相当于 javac(即编译工具)
| 命令 | 解释 |
| gcc hello.cpp | 默认生成a.out |
| ./a.out | 运行c程序 |
| gcc -o hello hello.cpp | 生成hello.out |
| ./hello.cpp | 运行c程序 |
hello.c文件如下,注意是<stdio.h>,而不是<studio.h>
#include <stdio.h>
int main(void){
printf("hello c\n");
return 0;
}
selinux
#查看SELinux状态
getenforce
#临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
setenforce 1 ##设置SELinux 成为enforcing模式
#永久关闭SELinux(需要重启机器)
#修改/etc/selinux/config 文件
#注释
#SELINUX=enforcing
#新增
SELINUX=disabled
根目录/下文件夹解释
| 根目录下的文件夹 | 目录解释 |
| root | 存放root用户的相关文件 |
| home | 存放普通用户文件的目录,新建用户也会在home目录下,非root登录后自动切换到/home/用户名/下 (即useradd userName下) |
| bin | 存放常用命令的目录 (如 cd / vi命令) |
| sbin | 要具有一定权限才能使用的命令目录 |
| mnt | 默认挂载光/软驱的目录 |
| etc | 存放配置相关的目录 |
| var | 存放变量相关的目录 |
| boot | 存放引导相关的目录 |
| usr | 软件默认安装目录(像windows Program Files) |
linux分区概念
基本分区+扩展分区之和必须<=4个
| 硬盘分区 | 两大区 | 解释说明 | ||
| 硬盘 | 基本分区 | 基本分区可以直接使用 | ||
| 扩展分区 | 逻辑分区 |
扩展分区不能直接使用, 必须经过二次分区后,变成逻辑分区才能使用, 而逻辑分区个数是没有上限的 |
||
| ...... | ||||
| 逻辑分区 |
/boot 100M
swap 256M (分swap的时候不用指定/挂载点)
/根分区 越大越好

df -h(推荐)或df -l 查看磁盘使用情况
fdisk -l 查看linux分区基本情况
/dev/sda3 dev为设备名 , sda3为分区名称(sda3代表第一个SCSI硬盘上的第三个主分区或扩展分区.)
命名规则为:sd代表SCSI硬盘,hd代表IDE硬盘,a代表第一块硬盘,b代表第2块硬盘,1,2,3,4为前4分区,必然是主分区或扩展分区,5开始必然都是逻辑分区..
df /boot 查看boot文件夹挂载了哪个设备,显示如下
/dev/sda1 XXX......
umount /boot 把boot文件夹挂载的设备卸载掉,此时/boot目录下没有任何子目录
mount /dev/sda1 /boot 把设备挂载到boot目录,此时/boot目录下又会有子目录 (加载光驱 可以直接用 mount /mnt/cdrom固定写法)
shell解释
shell还能进行程序设计,类似于DOS中的批处理文件,稳为shell script.
shell 目前有三种 sh | csh | dash ,使用风格差异很大,我们用的是/bin/sh链接

chsh -s /bin/bash 改变shell风格
| 根目录 | 重新载入 | ||||
| / | etc | bashrc | 自动启动配置 |
source ~/.bashrc(已验证) 或 source /etc/.bashrc(未验证) |
|
| profile | 系统环境变量,如j d k,tomcat | ||||
| home | King | .bashrc | 自动启动配置 | ||
| .bash_profile | 用户环境变量 | ||||
| Queen | .bashrc | 自动启动配置 | |||
| .bash_profile | 用户环境变量 |
.bashrc可以指定某些程序在用户登录时自动启动.
比如/home/king/.bashrc文件尾加入 /home/tomcat/bin/startup.sh start 就可以在king用户登录的时候启动tomcat
export PATH=$PATH:$HOME/$USER/tomcat/bin:/root/test 允许当前用户临时使用新环境变量
$PATH 原有路径
$HOME 工作主目录
$USER 当前登录用户名
: 代表分隔符
我们用echo $PATH , echo $USER ,echo $SHELL可查看变量内容
dns配置
Linux Centos7添加DNS==>https://www.cnblogs.com/baihuitestsoftware/articles/9519724.html
RMP(RedHat Package Manager)管理
rpm yum book==>https://www.cnblogs.com/whatlonelytear/articles/8621357.html
yum(Yellow dog Updater)管理
rpm yum book==>https://www.cnblogs.com/whatlonelytear/articles/8621357.html
sshd连接
在root状态用setup命令-->系统服务-->查看哪些系统服务已启动.

如果sshd为*表示开启,用securityCRT,Xftp 5等连接即可.
netstat -an 查看windows网络信息
设置开机启动 | 随机启动
为什么会叫httpd,mysqld,因为那个d的意思为daemon 后台守护进程模式
chkconfig httpd on #设apache开机启动
service httpd restart #于等效 /etc/init.d/httpd restart #重启Apache服务器
chkconfig mysqld on #设apache开机启动
service mysqld restart #于等效 /etc/init.d/mysqld restart #重启Apache服务器
而在最新的centos7之后需要使用如下命令,参考 http://man.linuxde.net/systemctl
systemctl start httpd.service
systemctl start nfs-server.service
systemctl start mysqld.service
centos7 firewalld 防火墙
1.firewalld的基本使用
#启动:
systemctl start firewalld
#查看状态:
systemctl status firewalld
#停止:
systemctl disable firewalld
#禁用:
systemctl stop firewalld
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
systemctl start firewalld.service #启动一个服务
systemctl stop firewalld.service #关闭一个服务
systemctl restart firewalld.service #重启一个服务
systemctl status firewalld.service #显示一个服务的状态
systemctl enable firewalld.service #在开机时启用一个服务
systemctl disable firewalld.service #在开机时禁用一个服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
3.配置firewalld-cmd
firewall-cmd --version #查看版本
firewall-cmd --help #查看帮助
firewall-cmd --state #显示状态
firewall-cmd --zone=public --list-ports #查看所有打开的端口
firewall-cmd --reload #更新防火墙规则
firewall-cmd --get-active-zones #查看区域信息
firewall-cmd --get-zone-of-interface=eth0 #查看指定接口所属区域
firewall-cmd --panic-on #拒绝所有包
firewall-cmd --panic-off #取消拒绝状态
firewall-cmd --query-panic #查看是否拒绝
4. 端口配置
#添加 (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重新载入
firewall-cmd --reload
#查看
firewall-cmd --zone= public --query-port=80/tcp
#删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
本小节参考自: linux7防火墙基本使用及详解==》https://www.cnblogs.com/ld1977/articles/6144297.html
更详情文章:Systemd 指令 ==》https://www.cnblogs.com/zwcry/p/9602756.html
centos7怎么查看是否有防火墙==>https://www.php.cn/centos/488583.html
配置指定用户的文件使用上限
#vim /etc/security/limits.conf(在文件最后添加)
elsearch soft nofile 65536
elsearch hard nofile 65536
elsearch soft memlock unlimited
elsearch hard memlock unlimited
crontab任务调度
用crontab -e 进入vi编辑界面然后录入多行定时任务
用crontab -l 列出当前哪些任务在调度
crontab -l -u username 查看某个用户的定时任务
用crontab -r 终止任务调度 (要小心,因为会直接清空定时任务文件内容)
crontab启停
/bin/systemctl restart crond.service #启动服务
/bin/systemctl reload crond.service #重新载入配置
/bin/systemctl status crond.service #查看crontab服务状态
任务调度分2类:
1.系统工作型: 重要任务,像扫病毒,启网络服务.
2.用户工作型: 指定用户才会执行.
规则如下,所以每天凌晨2点执行的话就是 0 2 * * * date >> /home/usr/date.out
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 |
| 示例 | * | * | * | * | * | date >> /home/usr/date.out |
| 解释 | 第几分 | 第几小时 | 第几天 | 第几月 | 每周第几天 | 执行的命令和参数 |
| 范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-6 |
但是推荐用法是用 0 2 * * * myTaskShell.sh脚本完整目录 (但该shell文件需要有-rwxr--r--权限,因为root需要去执行x它).
而该shell文件中存放的多行任务,可由同一时间触发.比如可以放内容如下:
|
date >> /home/usr/date1.out date >> /home/usr/date2.out |
2、禁用定时任务服务。
systemctl stop crontab;
systemctl disable crontab;
其它参考:
安装前configure或config原因
引用自: https://zhidao.baidu.com/question/1894963375116810900.html
其它参考: Linux中的Configure选项配置参数详解
-
configure
Linux 平台有各种不同的配置,安装时需要通过 configure 来确定,如:编译器用的是 cc 还是 gcc、不同库文件所在目录等。执行 configure 后会生成 Makefile,Makefile 规定了用什么编译器、编译参数等信息。
-
make
根据 Makefile 中规定的内容进行编译,生成的可执行文件放在当前目录或某个子目录。
-
make install
将 make 生成的文件安装到系统目录中,如 /usr/bin,这一步需要 root 权限,所以通常得用 sudo make install。如果没有这一步,在命令行中输入程序名字不能启动相应程序。
一. jdk的安装步骤
通联网的情况下 yum 极速安装:
yum install -y java-1.8.0-openjdk-devel
[1] 下载jdk安装文件,jdk-1.X.X-linux-i586-rpm.bin
[2] 复制到一个自建的jdk目录 /usr/jdk/
[3] 在/usr/jdk/下安装 ./jdk-1.X.X-linux-i586-rpm.bin
[4] 以root用户编辑环境变量配置文件:
#vi /etc/profile
_______________________________________________________
JAVA_HOME=/usr/jdk/jdk1.X.X
PATH=$JAVA_HOME/bin:$PATH (如果是windows环境,用%JAVA_HOME%)
CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/toos.jar
#导出环境变量
export PATH JAVA_HOME CLASSPATH
特别强调,上面语句的=左右千万不要有空格,不然会蛋疼死,本人在空格中足足耗了1小时,摸不着北.
上面的三个变量可以用echo $JAVA_HOME这样的语句显示.如果没有显示,那表示你可能在=左右加了空格,或别的地方有误
_______________________________________________________
[5] 重载配置文件,后重新打开终端
#source /etc/profile
#javac
#java -version 查看java版本
#which java 查看java主目录
补充说明:很多人仍旧搞不清path和classpath的区别,在此特别强调
path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方
classpath 类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
标准样例
export JAVA_HOME=/data/soft/jdk/jdk1.8.0_221
export MAVEN_HOME=/data/program/maven/apache-maven-3.3.9
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${MAVEN_HOME}/bin:$PATH
二. eclipse安装
[1] 下载eclipse安装文件,eclipse-SDK-3.X.X-linux-motif.tar.gz
[2] 复制到一个自建的eclipse目录 /usr/eclipse/
[3] 解压缩 tar -zxvf eclipse-SDK-3.X.X-linux-motif.tar.gz
[4] 切换到新生成的eclipes目录中
[5] ./eclipse 启动 (必须在图型界面)
三. tomcat安装
配置tomcat环境变量
[1] 下载tomcat安装文件,jakarta-tomcat-6.X.X.tar.gz
[2] 复制到一个自建的tomcat目录 /usr/tomcat/
[3] 解压缩 tar -zxvf jakarta-tomcat-6.X.X.tar.gz,会生成jakarta-tomcat-6.X.X目录
[4] 以root用户编辑环境变量配置文件:
#vi /etc/profile
_______________________________________________________
#CATALINA_HOME=/usr/tomcat/jakarta-tomcat-6.X.X
redis的安装
CENTOS7下安装REDIS【转】==>https://www.cnblogs.com/whatlonelytear/p/11624787.html
make PREFIX=/usr/local/redis install #安装到指定目录中
nginx的安装
apache的安装
添加apache为服务并开机启动#self#--https://i.cnblogs.com/EditArticles.aspx?postid=8900114#chkconfig
nginx和apache以普通用户启动
nginx
su root
cd ....nginx/sbin
chown root nginx
chmod u+s nginx
su 普通用户
.../nginx
nginx 让users有权限启动的两种方法==>https://www.jb51.net/article/112934.htm
apache
su root
cd ……/apache/bin
chown root httpd
chmod u+s httpd
su 普通用户
……/apache/bin/apachectl start
为何不chmod u+s apachectl呢?
因为chmod u+s 这种方式只针对二进制文件有效,而tail一下apachectl发现,apachectl是一个脚本文件,(如果tail 二进行文件会乱码)仔细查阅发现有如下一句
HTTPD='/home/……/apache/bin/httpd'
得出结论:apachectl脚本是通过启动httpd文件来启动整个httpd服务。
最后chmod u+s httpd即可,当然得保证httpd的所属者为root用户,如果不是,执行:
chown root httpd即可。
ruby安装
Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,可运行于多种平台,如 Windows、MAC OS 和 UNIX 的各种版本.
使用rvm进行ruby的安装与切换
rvm list //查询已经安装的ruby
rvm list known //列出已知的ruby版本
rvm install 1.9.3 //安装一个ruby版本
rvm use 1.9.3 //使用一个ruby版本
rvm use 1.9.3 --default //如果想设置为默认版本,可以这样
rvm remove 1.9.2 //卸载一个已安装版本
设置临时环境变量 : export PATH=/usr/local/ruby-1.8/bin:$PATH
错误: Could not connect to Redis No route to host问题解决
查看某软件安装位置
whereis zlib
whereis pcre
帐号锁定
#执行 vim /etc/pam.d/login
#在#%PAM-1.0 下新起一行,加入
auth required pam_tally2.so deny=3 unlock_time=10 even_deny_root root_unlock_time=60
#如果不限制root用户,则可以写成
#auth required pam_tally2.so deny=3 unlock_time=5
#even_deny_root 也限制root用户;
#deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
#unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
#root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
某一台Linux电脑连接另一台Linux电脑?
首先查看是否安装ssh服务:systemctl status sshd.service
#启动服务:
systemctl start sshd.service
#重启服务:
systemctl restart sshd.service
#开机自启:
systemctl enable sshd.service
#若已经安装了ssh服务直接在终端输入:
ssh username@IP(该IP是要连接的计算机ip)
#如果没有安装,就在命令行输入(这是ssh服务的安装命令):
yum install openssh-server
怎么实现SSH实现linux之间的免密码登陆拷贝文件?
# 拷贝远程服务器的文件到本地(可以是文件夹到文件夹)不一定要文件:
scp -r -P 端口号 用户名@IP地址:/data/from /tmp/dest/
# 拷贝本地文件到远程服务器:
scp -r /tmp/from.war 用户名@IP地址:/data/dest/
linux实现ssh scp sftp免密登录【原】==》https://www.cnblogs.com/whatlonelytear/p/9274837.html
swap分区
添加swap文件方式新建swap分区
添加swap文件方式新建swap分区==>https://blog.csdn.net/weixin_43603028/article/details/122717625
添加swap有两种方式:1、添加swap分区;2、添加swap文件;
1.添加swap分区
在关机状态下,添加一块200M(0.2G)的硬盘。。。。操作麻烦需要先关机
2.添加swap文件
#查看swap大小
free -m //
#注意:如swap显示0,或者没有输出swap,则表示系统并没有增加swap空间
#创建swap文件
fallocate -l 2G /etc/swap //指定文件为2G
#设置只允许root用户操作该文件
chmod 600 /etc/swap
#检查文件大小与权限
ls -lh /etc/swap
#设置该文件为swap文件
mkswap /etc/swap
#启用swap文件
swapon /etc/swap
#使swap文件永久生效
vim /etc/fstab
#末尾添加:
/etc/swap swap swap defaults 0 0
#更改swap配置
vim /etc/sysctl.conf
#有则修改,无则添加:(按需修改数值)
vm.swappiness=30 //值越大表示越倾向于使用swap空间
#重启生效
reboot
#再次查看swap大小
free -m //
磁盘挂载,磁盘共享
Linux之/etc/fstab文件讲解==>https://www.cnblogs.com/FengGeBlog/p/10178824.html 挂载的 /etc/fstab 文件内容参考
[bobo@test1 bobofolder]$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Dec 21 10:22:03 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root / ext4 defaults 1 1
UUID=575db1fa-eb23-41b9-97fa-1d857a70977 /boot ext4 defaults 1 2
/dev/mapper/vg0-data /data ext4 defaults 1 2
/dev/mapper/vg0-home /home ext4 defaults 1 2
/dev/mapper/vg0-usr /usr ext4 defaults 1 2
/dev/mapper/vg0-var /var ext4 defaults 1 2
/dev/mapper/vg0-swap swap swap defaults 0 0
1.2.3.4:/app /data/bobo/upload nfs defaults 0 0
1.2.3.4:/bak /tbak nfs defaults 0 0
系统监控
系统之眼!Linux系统性能监控工具Glances==>https://blog.51cto.com/mingongge/5093288
设置Linux用户连续N次输入错误密码进行登陆时,自动锁定X分钟==>https://blog.csdn.net/m0_37886429/article/details/79641551
那些很有必要的优化
linux web管理
这些年我们可能在使用的可视化Linux Web网站管理面板==>https://www.laozuo.org/9305.html
Webmin:一款基于Web的Linux管理工具,==》http://www.linuxboy.net/linuxjc/146337.html
新学技能
CTRL+U 取消之前输入
bug汇总
$CentOS6.2下面安装RVM+ruby+Rails
$安装RVM失败: public key not found
$RVM的安装和使用过程中碰到的问题
bash: ./wls1036_linux32.bin: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
技多不压身,真正的大师往往都怀着一颗学徒的心.
| error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory |
视频下载地址:http://pan.baidu.com/share/link?shareid=3121286176&uk=2198227232
centOS下载地址:http://mirrors.aliyun.com/centos/6.8/isos/x86_64/ 选择 CentOS-6.8-x86_64-bin-DVD1.iso 和 CentOS-6.8-x86_64-bin-DVD2.iso bin版本
centOS6 安装图文教程:
http://jingyan.baidu.com/article/25648fc1a235c99191fd0008.html
http://blog.csdn.net/wendi_0506/article/details/40890001
Linux服务器上监控网络带宽的18个常用命令和工具==》https://www.cnblogs.com/focusonepoint/p/7771214.html
病毒
Linux 清除隐藏的挖矿程序==》https://www.cnblogs.com/reachos/p/13129155.html
备用语句
cd /home/centos/program/redis-cluster/6301
./bin/redis-server ./etc/redis.conf
cd /home/centos/program/redis-cluster/6302
./bin/redis-server ./etc/redis.conf
cd /home/centos/program/redis-cluster/6303
./bin/redis-server ./etc/redis.conf
cd /home/centos/tool/redis-3.2.4
./redis-trib.rb create --replicas 1
192.168.1.107:6001
192.168.1.107:6002
192.168.1.107:6003
192.168.1.108:6004
192.168.1.108:6005
192.168.1.108:6006
$ gem update --system 更新到最新gem
韩顺平老师视频观看进度
韩顺平.linux视频教程第0讲.开山篇.wmv
韩顺平.linux视频教程第01讲.基础介绍.wmv
韩顺平.linux视频教程第2讲.历史介绍.vi编辑器的使用.wmv
韩顺平.linux视频教程第3讲.用户管理.目录结构.wmv
韩顺平.linux视频教程第4讲.常用命令.wmv
韩顺平.linux视频教程第5讲.文件权限.用户组(1).wmv
韩顺平.linux视频教程第6讲.文件权限.用户组(2).wmv
韩顺平.linux视频教程第7讲.j2ee环境.jdk.tomcat安装配置.wmv
韩顺平.linux视频教程第08讲.娱乐软件安装.linux分区详解.wmv
韩顺平.linux视频教程第9讲.linux安装演示.wmv
韩顺平.linux视频教程第10讲.shell介绍.wmv(2016/10/15)
韩顺平.linux视频教程第11讲.tcp.ip基础.wmv(未看)
韩顺平.linux视频教程第12讲.ip地址和包.解.网络环境配置.wmv(未看)
韩顺平.linux视频教程第13讲.rpm管理.samba安装配置使用.wmv(samba未看,有sshd,ftp还学这毛用)
韩顺平.linux视频教程第14讲.crontab详解.wmv
韩顺平.linux视频教程第15讲.进程的介绍和管理.wmv
韩顺平.linux视频教程第16讲.top详解.设.间.监控网络状态.wmv
韩顺平.linux视频教程第17讲.mysql安装.配置.使用.wmv(有用,暂未看)
韩顺平.linux视频教程第18讲.ssh安装.配置.使用.wmv(前半部分未看还是在讲MySQL)
韩顺平.linux视频教程第19讲.补充讲解linux重要内容.wmv
韩顺平.linux视频教程第20讲.常用命令补.inux启动过程分析.wmv
韩顺平.linux视频教程第21章.压缩和解压.ux下java网络编程.wmv(未看)
我的虚拟机帐号密码记录
| 机器名 | 相关 | 帐号 | 密码 | ip(动态) |
| centOS | linux | root | 132456 | 192.138.1.107 |
| centOS | linux | centos | centos | 192.138.1.107 |
| centOS | linux | weblogic | 123456 | 192.138.1.107 |
| centOS | weblogic | weblogic | weblogic123 | 192.137.1.107 |
runlevel control directory
linux资源下载
http://mirrors.163.com/centos/6/os/x86_64/Packages/
http://mirrors.163.com/centos/7/os/x86_64/Packages/
其它待学习命令
nslookup
$ split -b 10m -d large_file.log new_file_prefix

浙公网安备 33010602011771号