注意:Linux 脚本的编辑,最好是在服务器里面新建好文件再进行编辑,否则会有很多的因为格式引起的问题,不管怎么改,都改不好的。
【重点】
1、在Linux里面,每一个目录,都可以有它自己的权限,他们之间可以完全独立也可以有所关联,你可以只访问某一个目录,也可以从根目录访问;即使你拥有dapp目录的访问权限,但是你可能没有/dapp/sftp/esimsftp/的访问权限,因为每个目录都是可以独立的;
2、如果没有权限执行某些命令,那么可能你要去申请并使用sudo权限了;
1.查看文件的大小 【 Disk Usage 】
(1) 查看某个文件或者文件夹大小 :du -sh 文件或者文件夹名
(2) 查看当前目录的所有文件的大小和列出当前目录的子目录的大小 :du -h
(3) 目录及其子目录下所有目录和文件的大小:du -ah 目录名
(4) 整体目录按照文件夹大小升序排序:du * -sh|sort -h
(5) 所有子文件夹大小按照升序排序: du * |sort -h
2.删除文件【 remove 】
"rm -f" 强行删除,忽略不存在的文件,不提示确认。(f为force的意思)
"rm -i" 进行交互式删除,即删除时会提示确认。(i为interactive的意思)
"rm -r" 将参数中列出的全部目录和子目录进行递归删除。(r为recursive的意思)
"rm -v" 详细显示删除操作进行的步骤。(v为verbose的意思)
常用的删除操作都是组合的,比如 : rm -rf 文件或者文件夹
【注意 : 要进入到要删除的文件或者文件夹的目录里面】
" rm -f info.log.2020-08-.log " 批量删除 删除8月份的所有日志
" rm -f info.log.2020-{10,09}-.log " 批量删除 删除9月和10月的全部日志
"/bin/rm" : 彻底删除文件,被删除的文件不进入回收站 : /bin/rm 【文件名或文件范围。e.g : /bin/rm info-2020-10-01.log 或者 /bin/rm info-2020-10-*.log】
3.压缩和解压文件或者文件夹
(1) 压缩文件的大小,耗CPU : tar -jcvf warn.tar.bz2 info 把info文件夹里面的文件全部压缩成 warn.tar.bz2 并保存在当前目录下
(2) 压缩文件的大小,耗CPU (指定压缩路径) : tar -jcvf test/info.tar.bz2 info 这里表示把info文件夹的所有内容压缩到test文件夹下的info.tar.bz2文件中
(3) 解压文件到指定的目录 : tar -zxvf warn.tar.bz2 -C 【目录路径,前面不需要斜杠/,如果是多级目录,要用/分割,如test/t1/t11】
(4) 批量压缩:tar -vczf logbak/info-2020-02.tar.gz info-2020-02-*.log 把二月份所有的日志都压缩到logbak路径下的info-2020-02.log.gz文件中。
(5) 解压tgz : tar zxvf 文件名
(6) 解压和压缩tar.gz : tar -zcvf 文件名(压缩)tar -zxvf 文件名(解压)
4.创建目录或者文件
(1) mkdir 【文件夹名或者文件名】
5.复制
(1) 复制当前文件到文件夹:
cp 【要移动的文件名】 【目标路径:../文件夹名 表示上级目录的文件夹; ./文件夹名 当前目录的文件夹】
复制到当前目录的testInner文件夹 :cp info.tar.bz2 ./testInner
复制到上级目录的debug文件夹 :cp info.tar.bz2 ../debug
(2) 复制当前文件在当前目录,并修改名字
cp 【文件夹名1】 【文件夹名2】
复制当前文件在当前目录 :cp info.tar.bz2 info2.tar.bz2
6.剪切
跟复制文件的语句相同,只是把cp 换成 mv
7.覆盖上传
rz -y 【回车,选择同名文件】
8.上传
rz 【回车,选择文件】
9.下载
sz + 文件【回车】
10.查看当前的目录路径 : pwd
11.重命名
把a重命名为b:mv a b
12.跳到日志结尾 shift+G
13.【进入回收站】
查看文件系统 : df -h
进入回收站:cat /etc/pro cat ~/. => 得到 => cat ~/.bashrc => 得到 => alias rm=/bin/rmtrash.sh => cat /bin/rmtrash.sh => 得到 =>/tmp/.rmtrash/ => ll /tmp/.rmtrash/ => 可以对回收站的文件进行操作了
14.【定时任务编写】
* command
分 时 日 月 周 命令
解 释:
第1列:分钟1~59 每分钟
第2列:小时1~23(0表示0点)
第3列:日期1~31
第4列:月份1~12
第5列:星期0~6(0表示星期天)
第6列:要运行的命令
例如每天三点定时请求某一个url : 00 03 * * * /usr/bin/curl http://crmpay.com/mpdown
crontab每分钟定时执行:
*/1 * * * * service mysqld restart //每隔1分钟执行一次
*/10 * * * * service mysqld restart //每隔10分钟执行一次
crontab每小时定时执行:
0 */1 * * * service mysqld restart //每1小时执行一次
0 */2 * * * service mysqld restart //每2小时执行一次
crontab每天定时执行:
0 10 * * * service mysqld restart //每天10点执行
30 19 * * * service mysqld restart //每天19点30分执行
crontab每周定时执行:
0 10 * * 1 service mysqld restart //每周一10点执行
30 17 * * 5 service mysqld restart //每周五17点30分执行
15.【清空日志文件】
echo "" > 日志文件名 eg:echo "" > account.log
16.查看当前目录完整路径 : pwd
17、新建和删除文件夹和文件
(1) 新建:mkdir 文件夹名 touch 文件名,然后回车
(2) 删除:rm -rf 文件夹路径 eg: rm -rf /var/log/httpd(删除/var/log/httpd目录以及其下所有文件、文件夹)
rm -f 文件 eg /var/log/httpd/access.log (会强制删除这个文件)
注意:在linux中是没有设置回收站的,因此在使用rm命令的时候一定要小心些,删除之后的文件是无法恢复的。
18、清除xxx.out,
如果xxx.out是没有用的,那可以用echo "" > xxx.out清除
19、解压tar.gz压缩文件
sudo tar -zxvf xxx.tar.gz
20、获取root 权限
sudo -s
21、更改文件所属的权限
在Linux中,文件的路径变了,但是权限是不会变的,所以要更改权限,比如从zhaocl权限中的文件移动到/app目录下,权限也还是zhaocl的权限文件,一样无权操作;
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
例如:chown -R qq /home/qq (把home目录下的qq目录下的所有子文件的拥有者改为qq用户)
22、删除文件夹|目录或者文件(不会进回收站)
sudo rm -rf db-monitor/
23、测试网络是否是通的
(1) telnet ip port 例如:telnet api.atxtm.my 443 ---- telnet IP 端口
(2) ping + ip 例如:ping 10.32.35.42 ---- ping IP
24、退出命令
exit --- 退出dos窗口
q!,wq --- 退出vi编辑器
ctrl+c --- 退出telnet界面
quit --- 退出
25、日志搜索
Linux 中输入搜索内容:【/:搜索内容】
搜索下一个出现的关键字的地方:【N】键
不停的刷日志文件内容:【tail -f 文件名】
跳到文件顶部:【gg】
跳到文件底部:【shift+g】
26、修改文件的权限:chmod 权限等级 文件名
chmod 766 com_test_sh.sh
7 7 7 对应表示如下:
d rwx rwx rwx
权限 rwx
7 读+写+执行 rwx
6 读+写 rw-
5 读+执行 r-x
4 只读 r–
3 写+执行 -wx
2 只写 -w-
1 只执行 –x
0 无权限 —
27、nginx 修改后验证和加载
niginx目录一般都是在:用户组名(比如/app)/nginx/sbin
- 验证nginx配置是否正确
cd /app/nginx/sbin
./nginx -t
- 重启nginx
cd /app/nginx/sbin
./nginx -s reload
28、隐藏nginx 和 tomcat 版本号:
参考链接:https://blog.csdn.net/wanglei_storage/article/details/49802237
29、找到该项主机下部署的所有服务(java项目) --- 也能找到服务的根目录
ps -ef|grep java
30、sftp 的使用
连接远程服务器:sftp -oPort=端口号 用户名@主机 eg:sftp -oPort=443 CA_PROD@103.1.65.41
上传文件:put 本机文件路径 远程文件夹 eg:put /home/dapp/remove_sftp_file.sh /app/
下载文件:get 远程服务器文件 本机文件夹 eg: get CDR.GS.CA.202207* /home/dapp/test_222/
31、cd 的使用
返回上一级目录:cd ..
进入一个目录:cd 目录路径
返回上次的目录:cd -
32、查看某个服务所占用的端口
ps -ef|grep 服务名
netstat -anp|grep 端口号
如下图所示,可以看到服务占用的端口为:8081

33、Java服务启动
首先找到startup.sh所在的目录,一般在/app/disconf-tomcat/bin目录下,然后ll或者ls看下有没有startup.sh文件,有则执行语句 :
sh startup.sh
关闭服务
sh shutdown.sh
34、查看服务的端口是否正常
(1)查看服务所属的端口,按照第32点的方法去查;
(2)查看所有的在使用的端口号情况:netstat -tunlp;
(3)查看所查询的端口号情况:netstat -tunlp | grep 端口号;
35、虚拟IP查看:ifconfig

36、通过域名查看IP,只要ping以下这个域名就可以了。


37、防火墙相关问题:
(1) 首先要清楚防火墙的原理是什么:
1、防火墙可以拒绝所有IP访问;
2、防火墙可以对指定的IP做端口限制访问;
3、10.0.0.0/8表示的是整个内网IP,也就是localhost的访问
4、都有哪些IP连了这台机:netstat -lantp | grep ESTABLISH
5、都有哪些IP访问了这台机子的redis:netstat -lantp | grep -E "63790|26379" | awk '{print 1}' | sort -u
6、对某个端口的所有IP进来都是放行的:iptables -D INPUT -p tcp --dport 63790 -j ACCEPT
7、对某个端口的所有IP进来都是拒绝的:iptables -D INPUT -p tcp --dport 63790 -j DROP
8、白名单如果什么策略都没有配置,那么默认所有的IP能访问所有的端口。白名如果设置了IP对某个端口的访问限制,那就是只限制让那个IP访问指定的端口,其他的IP将不能访问该端口,其他端口没有设置的,就都是能访问的,只是对设置策略的端口进行限制。
(2) 查看某台主机防火墙中的黑白名单添加情况:
(在受到SSH攻击的时候,就需要在防火墙加黑白名单,进行防止攻击)
查看当前防火墙策略:sudo iptables -nvL(sudo iptables -t filter -nL INPUT)
加黑名单:iptables -I INPUT -s 拦截的IP -j DROP
(eg.. iptables -I INPUT -s 10.17.40.5 -j DROP)
加白名单:iptables -I INPUT 3 -s 允许访问的IP -p tcp --dport 允许的端口 -j ACCEPT
(eg.. iptables -I INPUT 3 -s 136.6.231.163 -p tcp --dport 1521 -j ACCEPT)
说明:--dport 允许的端口:本机对外部开放的端口
-s 匀速访问的IP:外部访问进来的IP地址
了解更多请参考:
(1)Linux 防火墙白名单添加 --- 带IP:
https://blog.csdn.net/weixin_45299145/article/details/122499499
(2)Linux 防火墙黑白名单设置 --- 不带IP:
https://blog.csdn.net/weixin_40918067/article/details/117869158
(3)Linux 防火墙+Linux学习资料:
https://zhuanlan.zhihu.com/p/447288815
(4)防火墙IP黑名单:
https://blog.csdn.net/weixin_39878646/article/details/116777253
38、查看Linux版本是不是CentOS
cat /etc/redhat-release 或者 cat /proc/version
39、建立软链
格式:ln -s 链接到的实际地址 软链
ln -s /usr/local/tools/Python-3.7.12/bin/python3.7 /usr/bin/python3
40、删除软链
unlink 软链名称
rm 软链名称1 软链名称2 ...
41、查看服务进程
未知进程名:ps -elf
已知进程名或者部分进程名:ps -elf|grep '进程名'
42、结束某个进程:
首先通过 ps -elf|grep '进程名' 找到这个进程,再找到这个进程的PID,然后:
kill -9 PID (-9:表示强制删除)
43、Python 卸载
whereis pythonx找到安装目录,然后用rm -rf xxx删除根目录,再把软链删了就行了
44、统计文件夹下的文件个数
ls -l |grep "^-"|wc -l
45、统计路径下目录数量
ls -l |grep "^d"|wc -l
46、防火墙
(1) 安装: yum install iptables-services
(2) 查看是否启动:service iptables status(Centos7以前) / systemctl status firewalld.service(Centos7及以后)
(3) 启动和停止:service iptables restart(Centos7以前) / systemctl start firewalld.service / systemctl stop firewalld.service (Centos7及以后)
注意:Centos7 以后都用 firewalld 取代了 iptables ,systemctl取代了service
47、重启服务器
(1) reboot
(2) shutdown -r now
说明:
-h:停止系统服务并关机
-r: 停止系统服务后重启
扩展:
shutdown -h now --立即关机
shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天
shutdown -h +10 --10分钟后自动关机
shutdown -r now --立即重启
shutdown -r +30 'The System Will Reboot in 30 Mins' --30分钟后重启并并发送通知给其它在线用户
48、设置自启动
(1) cd /etc
(2) sudo vi rc.local
(3) 加入要执行的语句,比如加入防火墙开机自动启动:sudo service iptables restart
49、查看出口IP
(1) 登录到内网IP的服务器
(2) 执行 curl cip.cc