第一页 上页 1 2 3 4 5 6 7 8 9 下页 最后页 [ 显示模式: 摘要 | 列表 ]

安装了docker 因服务器从公网(192.168.50.60)机房迁移到内网(192.168.190.60),更改了IP地址,环境就运行不起来了~

输什么命令错误都是:

 

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?  

启动docker后执行 systemctl status docker 出现了异常,具体如下:
[root@joinApp2 ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Thu 2016-02-25 17:26:11 CST; 16s ago
Docs:
http://docs.docker.com Process: 16384 ExecStart=/usr/bin/docker daemon $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
Main PID: 16384 (code=exited, status=1/FAILURE)

Feb 25 17:26:10 joinApp2 systemd[1]: Failed to start Docker Application Container Engine.
Feb 25 17:26:10 joinApp2 systemd[1]: Unit docker.service entered failed state.
Feb 25 17:26:10 joinApp2 systemd[1]: docker.service failed.
Feb 25 17:26:11 joinApp2 systemd[1]: docker.service holdoff time over, scheduling restart.
Feb 25 17:26:11 joinApp2 systemd[1]: start request repeated too quickly for docker.service
Feb 25 17:26:11 joinApp2 systemd[1]: Failed to start Docker Application Container Engine.
Feb 25 17:26:11 joinApp2 systemd[1]: Unit docker.service entered failed state.
Feb 25 17:26:11 joinApp2 systemd[1]: docker.service failed.

当时问题没解决搁置了。

今天重新google , 解决了问题,现在贴下解决办法

vi /etc/sysconfig/selinux
把selinux后面的改为disabled,重启一波机器,再重启docker就可以了

 

解决方法二:

===================

[root@master01 ~]# systemctl restart docker

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@master01 ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2018-01-22 23:31:10 CST; 5s ago
Docs: http://docs.docker.com
Process: 17943 ExecStart=/usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY $REGISTRIES (code=exited, status=1/FAILURE)
Main PID: 17943 (code=exited, status=1/FAILURE)


Jan 22 23:31:09 master01 systemd[1]: Starting Docker Application Container Engine...
Jan 22 23:31:09 master01 dockerd-current[17943]: time="2018-01-22T23:31:09.315315148+08:00" level=info msg="libcontainerd: new containerd process, pid: 17954"
Jan 22 23:31:10 master01 dockerd-current[17943]: time="2018-01-22T23:31:10.329514525+08:00" level=fatal msg="Error starting daemon: error initializing graphdriver: devmapper..._devices\n"
Jan 22 23:31:10 master01 systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Jan 22 23:31:10 master01 systemd[1]: Failed to start Docker Application Container Engine.
Jan 22 23:31:10 master01 systemd[1]: Unit docker.service entered failed state.
Jan 22 23:31:10 master01 systemd[1]: docker.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

处理方法

vim /etc/sysconfig/docker-storage

DOCKER_STORAGE_OPTIONS=

vim /etc/sysconfig/docker

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'

# vim /etc/docker/daemon.json

{ "storage-driver": "devicemapper" }

最后重启docker

[root@master01 ~]# systemctl restart docker

CentOS简单配置防御ddos攻击

[不指定 2020/09/01 08:43 | by 刘新修 ]

 DDOS这种攻击的目的就是在短时间内制造数量巨大的并发连接,从而使用服务器down机或消耗掉网络带宽和系统资源导致正常用户无法正常访问浏览网站。
DoS Deflate 是一个轻量级阻止拒绝服务攻击的bash shell脚本。我们可以通过安装他并且简单配置来防御DDOS攻击。
首先安装命令:

C#代码
  1. wget http://www.inetbase.com/scripts/ddos/install.sh  
  2. chmod 700 install.sh  
  3. ./install.sh  

然后会自动进行安装,完成后会有一段版权提示与说明,按q键退出即可。
卸载命令:

C#代码
  1. wget http://www.inetbase.com/scripts/ddos/uninstall.ddos  
  2. chmod 700 uninstall.ddos  
  3. ./uninstall.ddos  

安装完成之后就可以通过简单配置来进行DDOS防御,我是用的是CentOS7操作系统配置文件目录是/usr/local/ddos/ddos.conf
或者也可以通过命令更改 vi /usr/local/ddos/ddos.conf 编辑完成后:wq保存退出
下面介绍一下ddos.conf的基本配置#为注释部分不用理会关键配置项有:

C#代码
  1. PROGDIR="/usr/local/ddos" #文件存放目录  
  2. PROG="/usr/local/ddos/ddos.sh" #主要功能脚本  
  3. IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" #可以设置IP白名单  
  4. CRON="/etc/cron.d/ddos.cron" #crond定时任务脚本  
  5. APF="/etc/apf/apf"          #这两项应该分别对应使用APF或者iptables配置目录不过笔者  
  6. IPT="/sbin/iptables"        #尝试打开文件里边是乱码,有哪位大牛知道是干嘛的欢迎留言  
  7.   
  8. FREQ=1 #间隔多久检查一次,默认1分钟  
  9.   
  10. NO_OF_CONNECTIONS=150 #最大连接数设置,超过这个数字的IP就会被屏蔽  
  11.   
  12. APF_BAN=0 #1:使用APF,0:使用iptables,推荐使用iptables  
  13.   
  14. KILL=1    #是否屏蔽IP 1:屏蔽,0:不屏蔽  
  15.   
  16. EMAIL_TO="root" #发送电子邮件报警的邮箱地址,换成自己使用的邮箱  
  17.   
  18. BAN_PERIOD=600  #禁用IP时间,可根据情况调整,默认单位:秒  

如果/usr/local/ddos/ddos.sh 统计不正确,可能是启用ipv6的缘故

vi /usr/local/ddos/ddos.sh  修改/usr/local/ddos/ddos.sh

117行的内容是这样的netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

修改为以下代码即可!

C#代码
  1. netstat -ntu | awk '{print $5}' | cut -d: -f1 | sed -n '/[0-9]/p' | sort | uniq -c | sort -nr > $BAD_IP_LIST  

CentOS7默认为Firewall为了配合使用DoS Deflate建议停用Firewall启用iptables,不会用iptables的朋友,百度一下有很多

如何确认是否受到DDOS攻击?

登录到你的服务器以root用户执行下面的命令,使用它你可以检查你的服务器是在DDOS攻击与否:

C#代码
  1. netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n  

执行后,将会显示服务器上所有的每个IP多少个连接数。每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了,该命令将显示已登录的是连接到服务器的最大数量的IP的列表

另外还有其他情况,使DDOS变得更为复杂,因为攻击者在使用更少的连接,更多数量IP的攻击服务器的情况下,你得到的连接数量较少,即使你的服务器被攻击了。有一点很重要,你应该检查当前你的服务器活跃的连接信息,执行以下命令:

C#代码
  1. netstat -n | grep :80 |wc –l  

上面的命令将显示所有打开你的服务器的活跃连接。

 

您也可以使用如下命令:

C#代码
  1. netstat -n | grep :80 | grep SYN |wc –l  

从第一个命令有效连接的结果会有所不同,但如果它显示连接超过500,那么将肯定有问题。

如果第二个命令的结果是100或以上,那么服务器可能被同步攻击。

一旦你获得了攻击你的服务器的IP列表,你可以很容易地阻止它。

google chrome 插件安装目录

[不指定 2017/06/19 13:52 | by 刘新修 ]

MAC:

C#代码
  1. /Users/jesse/Library/Application Support/Google/Chrome/Default/Extensions/nhdogjmejiglipccpnnnanhbledajbpd/0.0.2_0  

windows:

C#代码
  1. C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Extensions\nhdogjmejiglipccpnnnanhbledajbpd\3.1.4_0  

 

/bin/false和/sbin/nologin的区别
 
1 区别 
/bin/false是最严格的禁止login选项,一切服务都不能用。 
/sbin/nologin只是不允许login系统 
 
其中树莓派的/sbin/nologin文件在/usr/sbin/nologin 
小技巧: 
查看 /etc/passwd文件,能看到各用户使用的shell 
 
2.1 nologin 
当用户配置成/sbin/nologin时,如果再使用该用户ssh到linux操作系统,会提示 
This account is currently not available. 
 
如果在树莓派下,配置错误,误将/usr/sbin/nologin配置成/sbin/nologin,SSH时会提示 
root@raspberrypi:/home# useradd -s /sbin/nologin piaohailin 
root@raspberrypi:/home# su piaohailin 
Cannot execute /sbin/nologin: No such file or directory 
 
2.2 false 
当用户配置成/bin/false时,ssh之后显示如下 
root@raspberrypi:/home# useradd -s /bin/false piaohailin 
root@raspberrypi:/home# su piaohailin 
root@raspberrypi:/home# whoami 
root 

不会有任何提示,用户切换不过去 

 在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在Linux系统中,如何去搜索一些比较大的文件呢?下面我整理了一下在Linux系统中如何查找大文件或文件夹的方法。

1: 如何查找大文件?

 

其实很多时候,你需要了解当前系统下有哪些大文件,比如文件大小超过100M或1G(阀值视具体情况而定)。那么如何把这些大文件搜索出来呢?例如我要搜索当前目录下,超过800M大小的文件

C#代码
  1. [root@getlnx01 u03]# pwd  
  2. /u03  
  3. [root@getlnx01 u03]# find . -type f -size +800M  
  4. ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1  
  5. ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1  
  6. ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1  
  7. ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1  
  8. ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1  
  9. ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1  
  10. ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1  
  11. ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1  
  12. ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1  
  13. ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1  
  14. ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1  
  15. ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1  
  16. ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1  
  17. ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1  
  18. ./oradata/epps/invsubmat_d08.dbf  
  19. ./oradata/epps/gmtinv_d08.dbf  
  20. ./oradata/epps/gmtinv_x01.dbf  
  21. ./oradata/epps/undotbs02.dbf  
  22. ./oradata/epps/gmtinv_d07.dbf  
  23. ./oradata/epps/undotbs01.dbf  
  24. ./oradata/epps/gmtinv_x02.dbf  

如上命令所示,我们仅仅能看到超过800M大小的文件的文件名称,但是对文件的信息(例如,文件大小、文件属性)一无所知,那么能否更详细显示一些文件属性或信息呢,当然可以,如下所示

C#代码
  1. [root@getlnx01 u03]# find . -type f -size +800M  -print0 | xargs -0 ls -l  
  2. -rw-r----- 1 oracle oinstall 2782846976 Mar  6 11:51 ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1  
  3. -rw-r----- 1 oracle oinstall 1878433792 Mar  6 11:53 ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1  
  4. -rw-r----- 1 oracle oinstall 1378492416 Mar  6 11:54 ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1  
  5. -rw-r----- 1 oracle oinstall 1641381888 Mar  6 11:56 ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1  
  6. -rw-r----- 1 oracle oinstall 1564065792 Mar  6 11:58 ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1  
  7. -rw-r----- 1 oracle oinstall 1663492096 Mar  6 12:00 ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1  
  8. -rw-r----- 1 oracle oinstall 1368244224 Mar  6 12:02 ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1  
  9. -rw-r----- 1 oracle oinstall 1629069312 Mar  6 12:04 ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1  
  10. -rw-r----- 1 oracle oinstall 1629954048 Mar  6 12:06 ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1  
  11. -rw-r----- 1 oracle oinstall 1202192384 Mar  6 12:07 ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1  
  12. -rw-r----- 1 oracle oinstall 1189388288 Mar  6 12:10 ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1  
  13. -rw-r----- 1 oracle oinstall 1089257472 Mar  6 12:11 ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1  
  14. -rw-r----- 1 oracle oinstall 1097687040 Mar  6 12:12 ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1  
  15. -rw-r----- 1 oracle oinstall 1051009024 Mar  6 12:13 ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1  
  16. -rw-r----- 1 oracle oinstall 4294975488 Apr  3 15:07 ./oradata/epps/gmtinv_d07.dbf  
  17. -rw-r----- 1 oracle oinstall 4194312192 Apr  1 22:36 ./oradata/epps/gmtinv_d08.dbf  
  18. -rw-r----- 1 oracle oinstall 4294975488 Apr  3 15:54 ./oradata/epps/gmtinv_x01.dbf  
  19. -rw-r----- 1 oracle oinstall 4294975488 Apr  3 15:57 ./oradata/epps/gmtinv_x02.dbf  
  20. -rw-r----- 1 oracle oinstall 4294975488 Apr  1 22:35 ./oradata/epps/invsubmat_d08.dbf  
  21. -rw-r----- 1 oracle oinstall 8589942784 Apr  4 09:55 ./oradata/epps/undotbs01.dbf  
  22. -rw-r----- 1 oracle oinstall 8589942784 Apr  4 09:15 ./oradata/epps/undotbs02.dbf  

当我们只需要查找超过800M大小文件,并显示查找出来文件的具体大小,可以使用下面命令:

C#代码
  1. [root@getlnx01 u03]# find . -type f -size +800M  -print0 | xargs -0 du -h  
  2. 1.3G    ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1  
  3. 1.1G    ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1  
  4. 1.2G    ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1  
  5. 1.2G    ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1  
  6. 1.5G    ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1  
  7. 1.1G    ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1  
  8. 1.3G    ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1  
  9. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1  
  10. 1004M   ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1  
  11. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1  
  12. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1  
  13. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1  
  14. 2.6G    ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1  
  15. 1.8G    ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1  
  16. 4.1G    ./oradata/epps/invsubmat_d08.dbf  
  17. 4.0G    ./oradata/epps/gmtinv_d08.dbf  
  18. 4.1G    ./oradata/epps/gmtinv_x01.dbf  
  19. 8.1G    ./oradata/epps/undotbs02.dbf  
  20. 4.1G    ./oradata/epps/gmtinv_d07.dbf  
  21. 8.1G    ./oradata/epps/undotbs01.dbf  
  22. 4.1G    ./oradata/epps/gmtinv_x02.dbf  

如果你还需要对查找结果按照文件大小做一个排序,那么可以使用下面命令:

C#代码
  1. [root@getlnx01 u03]# find . -type f -size +800M  -print0 | xargs -0 du -h | sort -nr  
  2. 1004M   ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1  
  3. 8.1G    ./oradata/epps/undotbs02.dbf  
  4. 8.1G    ./oradata/epps/undotbs01.dbf  
  5. 4.1G    ./oradata/epps/invsubmat_d08.dbf  
  6. 4.1G    ./oradata/epps/gmtinv_x02.dbf  
  7. 4.1G    ./oradata/epps/gmtinv_x01.dbf  
  8. 4.1G    ./oradata/epps/gmtinv_d07.dbf  
  9. 4.0G    ./oradata/epps/gmtinv_d08.dbf  
  10. 2.6G    ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1  
  11. 1.8G    ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1  
  12. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1  
  13. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1  
  14. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1  
  15. 1.6G    ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1  
  16. 1.5G    ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1  
  17. 1.3G    ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1  
  18. 1.3G    ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1  
  19. 1.2G    ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1  
  20. 1.2G    ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1  
  21. 1.1G    ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1  
  22. 1.1G    ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1  

不过如上截图所示,有时候排列的顺序并不完全是按大小一致,这个是因为du命令的参数h所致,你可以统一使用使用MB来显示,这样就能解决这个问题。到这里,这个在Linux系统查找大文件的命令已经非常完美了,当然如果你还有很多的需求,那么可以在这个命令上做修改、调整.

2: 如何查找Linux下的大目录

 

譬如有时候磁盘空间告警了,而你平时又疏于管理、监控文件的增长,那么我需要快速的了解哪些目录变得比较大,那么此时我们可以借助du命令来帮我们解决这个问题。

C#代码
  1. [root@getlnx01 u03]# du -h --max-depth=1  
  2. 16K     ./lost+found  
  3. 33G     ./flash_recovery_area  
  4. 37G     ./oradata  
  5. 70G     .  

如果你想知道flash_recovery_area目录下面有哪些大文件夹,那么可以将参数max-depth=2 ,如果你想对搜索出来的结果进行排序,那么可以借助于sort命令。如下所示

C#代码
  1. [root@getlnx01 u03]# du -h --max-depth=2 | sort -n  
  2. 3.5G    ./flash_recovery_area/EPPS  
  3. 16K     ./lost+found  
  4. 29G     ./flash_recovery_area/backup  
  5. 33G     ./flash_recovery_area  
  6. 37G     ./oradata  
  7. 37G     ./oradata/epps  
  8. 70G     .  
  9. [root@getlnx01 u03]# du -hm --max-depth=2 | sort -n  
  10. 1       ./lost+found  
  11. 3527    ./flash_recovery_area/EPPS  
  12. 29544   ./flash_recovery_area/backup  
  13. 33070   ./flash_recovery_area  
  14. 37705   ./oradata  
  15. 37705   ./oradata/epps  
  16. 70775   .  

[root@getlnx01 u03]# cd /

[root@getlnx01 /]# du -hm --max-depth=2 | sort -n

 

有时候搜索出来的结果太多了(譬如,我从根目录开始搜索),一直在刷屏,如果我只想查出最大的12个文件夹,怎么办呢?此时就要借助head命令来显示了

C#代码
  1. [root@getlnx01 /]# du -hm --max-depth=2 | sort -nr | head -12  
  2. 407480  .  
  3. 167880  ./u04  
  4. 158685  ./u02/oradata  
  5. 158685  ./u02  
  6. 152118  ./u04/oradata  
  7. 70775   ./u03  
  8. 37705   ./u03/oradata  
  9. 33070   ./u03/flash_recovery_area  
  10. 5995    ./u01/app  
  11. 5995    ./u01  
  12. 3551    ./usr  
  13. 1558    ./usr/share  
  14. [root@getlnx01 /]#   

查看具体目录:du -sh  /www/cnmo/

查看整体概况:df -h

Linux Shell 汇总

[不指定 2017/05/03 18:33 | by 刘新修 ]

 1、查看当前操作系统类型

C#代码
  1. #!/bin/sh  
  2. SYSTEM=`uname -s`  
  3. if [ $SYSTEM = "Linux" ] ; then  
  4. echo "Linux"  
  5. elif [ $SYSTEM = "FreeBSD" ] ; then  
  6. echo "FreeBSD"  
  7. elif [ $SYSTEM = "Solaris" ] ; then  
  8. echo "Solaris"  
  9. else  
  10. echo "What?"  
  11. fi  

 

C++代码
  1. hostname  
  2. ############### 最后一次修改的用户 ####################  
  3. cd /www/ftp/ysx/xfile/www  
  4. ls -lh  
  5. ############### 最后一次修改的用户 ####################  
  6. cat /etc/redhat-release  
  7. df -h  
  8. rsync -avzut --progress --delete /www/ftp/ycw/xfile/www/assets liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  9. rsync -avzut --progress /www/ftp/ycw/xfile/www/json/assets.json liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  10.   
  11. echo http://ysx.com/xfile/www/json/assets.json  
  12. UNAME=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .name)  
  13. VERSION=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .version)  
  14. VERSION=${VERSION//\"/}  
  15. UpdateTime=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .UpdateTime)  
  16. UpdateTime=${UpdateTime//[[:space:]]/_}  
  17. echo $UNAME  
  18. echo $UpdateTime  
  19. cp /www/ftp/ycw/xfile/www/json/assets.json /www/ftp/back/xfile/www/json/assets-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.json  
  20. cd /www/ftp/ycw/xfile/www/ && zip -r -q /www/ftp/back/xfile/www/assets-json-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.zip assets json/assets.json  
  21. echo "" > /www/ftp/back/xfile/www/sh/sh-$VERSION.txt  
  22. echo cp /www/ftp/back/xfile/www/json/assets-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.json /www/ftp/ysx/xfile/www/json/assets.json >> /www/ftp/back/xfile/www/sh/sh-$VERSION.txt  
  23. echo unzip /www/ftp/back/xfile/www/assets-json-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.zip -d /www/ftp/ysx/xfile/www >> /www/ftp/back/xfile/www/sh/sh-$VERSION.txt  

其他版本,不增加平台版本号:

C#代码
  1. hostname  
  2. ############### 最后一次修改的用户 ####################  
  3. cd /www/ftp/ysx/xfile/www  
  4. ls -lh  
  5. ############### 最后一次修改的用户 ####################  
  6. cat /etc/redhat-release  
  7. df -h  
  8. rsync -avzut --progress --delete /www/ftp/ycw/xfile/www/assets liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  9. rsync -avzut --progress /www/ftp/ycw/xfile/www/json/assets.json liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  10.   
  11. echo http://ysx.cnmo.me/xfile/www/json/assets.json  
  12. UNAME=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .name)  
  13. UNAME=${UNAME//\"/}  
  14. VERSION=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .version)  
  15. VERSION=${VERSION//\"/}  
  16. UpdateTime=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .UpdateTime)  
  17. UpdateTime=${UpdateTime//[[:space:]]/_}  
  18. UpdateTime=${UpdateTime//\"/}  
  19. cp /www/ftp/ycw/xfile/www/json/assets.json /www/ftp/back/xfile/www/json/assets-$VERSION-$UNAME-$UpdateTime.json  
  20. cd /www/ftp/ycw/xfile/www/ && zip -r -q /www/ftp/back/xfile/www/assets-json-$VERSION-$UNAME-$UpdateTime.zip assets json/assets.json  
  21. echo "" > /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt  
  22. echo cp /www/ftp/back/xfile/www/json/assets-$VERSION-$UNAME-$UpdateTime.json /www/ftp/ysx/xfile/www/json/assets.json >> /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt  
  23. echo unzip /www/ftp/back/xfile/www/assets-json-$VERSION-$UNAME-$UpdateTime.zip -d /www/ftp/ysx/xfile/www >> /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt  

 代码同步超级管理员

C#代码
  1. myPath="/www/ftp/${userName//\"/}"  
  2. ############### 这里的-d 参数判断$myPath是否存在 ###############  
  3. if [ ! -d "$myPath" ] ; then  
  4. echo "这个目录不存在呀!有问题请及时与管理员联系:liu.xinxiu@cnmo.com"  
  5. cat $myPath  
  6. exit  
  7. #else    
  8. #echo "目录存在!"  
  9. fi  
  10. ############### 这里的-d 参数判断$myPath是否存在 ###############  
  11. proName=${projectName//\"/}  
  12. proPath="$myPath/xfile/$proName" 
  13. ysxPath="/www/ftp/ysx/xfile/$proName" 
  14. backPath="/www/ftp/back/xfile/$proName" 
  15.  
  16. hostname 
  17. ############### 最后一次修改的用户 #################### 
  18. cd $proPath 
  19. ls -lh 
  20. ############### 最后一次修改的用户 #################### 
  21. cat /etc/redhat-release 
  22. df -h 
  23.  
  24. ############### 数据同步 #################### 
  25. rsync -avzut --progress --delete $proPath/assets liuxinxiu@127.0.0.1::ysx_xfile_$proName --password-file=/pas/rsync.pas 
  26. cp $proPath/json/assets.json $ysxPath/json/assets.json 
  27. ############### 数据同步 #################### 
  28.  
  29. echo http://ysx.cnmo.me/xfile/$proName/json/assets.json 
  30. UNAME=$(cat $proPath/json/assets.json | jq -c .name) 
  31. UNAME=${UNAME//\"/} 
  32. VERSION=$(cat $proPath/json/assets.json | jq -c .version) 
  33. VERSION=${VERSION//\"/} 
  34. UpdateTime=$(cat $proPath/json/assets.json | jq -c .UpdateTime) 
  35. UpdateTime=${UpdateTime//[[:space:]]/__} 
  36. UpdateTime=${UpdateTime//\:/_} 
  37. UpdateTime=${UpdateTime//\"/} 
  38.  
  39. ############### 数据备份操作 #################### 
  40. cp $proPath/json/assets.json $backPath/json/assets-${VERSION}__${UpdateTime}.json 
  41. cd $proPath/ && zip -r -q $backPath/assets-${VERSION}__${UpdateTime}.zip assets json/assets.json 
  42. echo "" > $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  43. echo cp $backPath/json/assets-${VERSION}__${UpdateTime}.json $ysxPath/json/assets.json >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  44. echo unzip -o $backPath/assets-${VERSION}__${UpdateTime}.zip -d $ysxPath >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  45. echo sed -i "'"s/,'"addOth"':{/,'"Fallback"':'"'$BUILD_USER_ID-v${ENV, var="BUILD_ID"}'"','"addOth"':{/g"'" $ysxPath/json/assets.json >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  46. ############### 数据备份操作 #################### 
  47.  
  48.  
  49. ############### 维护回退版本列表 #################### 
  50. versionList="$backPath/versionList.txt" 
  51. if [ ! -f "$versionList" ]; then 
  52.     #touch "$versionList" 
  53.     echo "vlist=assets-${VERSION}__${UpdateTime}" > $backPath/versionList.txt 
  54. else  
  55.     #grep -q "裸照" urfile  && echo "有的"  || echo "没的" 
  56.     grep -q "assets-${VERSION}__${UpdateTime}" $backPath/versionList.txt  && echo "相同代码在备份文件中已经存在,已再次执行了代码同步!您还可以选择代码回滚功能,一键回退指定版本~"  || sed -i "/^vlist.*$/s//& ,assets-${VERSION}__${UpdateTime}/g" $backPath/versionList.txt  
  57. fi  
  58. ############### 维护回退版本列表 ####################  

 

#!/bin/sh  

myPath="/var/log/httpd/"  

myFile="/var /log/httpd/access.log"  

#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限  

if [ ! -x "$myPath"]; then  

  mkdir "$myPath"  

fi  

#这里的-d 参数判断$myPath是否存在  

if [ ! -d "$myPath"]; then  

  mkdir "$myPath"  

fi  

#这里的-f参数判断$myFile是否存在  

if [ ! -f "$myFile" ]; then  

  touch "$myFile"  

fi  

#其他参数还有-n,-n是判断一个变量是否是否有值  

if [ ! -n "$myVar" ]; then  

  echo "$myVar is empty"  

  exit 0  

fi  

#两个变量判断是否相等  

if [ "$var1" = "$var2" ]; then  

  echo '$var1 eq $var2'  

else  

  echo '$var1 not eq $var2'  

fi

shell截取字符串的方法

[不指定 2016/03/11 10:17 | by 刘新修 ]

shell中截取字符串的方法有很多中,

${expression}一共有9种使用方法。

${parameter:-word}

${parameter:=word}

${parameter:?word}

${parameter:+word} 

上面4种可以用来进行缺省值的替换。

${#parameter}

上面这种可以获得字符串的长度。 

${parameter%word} 最小限度从后面截取word

${parameter%%word} 最大限度从后面截取word

${parameter#word} 最小限度从前面截取word

${parameter##word} 最大限度从前面截取word

上面4个就是用来截取字符串的方法了。

有了着四种用法就不必使用cut命令来截取字符串了

第一种又可以分为四种情况,下面一一介绍。


1、使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。用法为#*substr,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${str#*//}

得到的结果为www.你的域名.com/cut-string.html,即删除从左边开始到第一个"//"及其左边所有字符2、使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。用法为##*substr,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${str##*/}

得到的结果为cut-string.html,即删除最后出现的"/"及其左边所有字符

3、使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。用法为%substr*,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${str%/*}

得到的结果为http://www.你的域名.com,即删除从右边开始到第一个"/"及其右边所有字符

4、使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。用法为%%substr*,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${str%%/*}

得到的结果为http://www.你的域名.com,即删除从右边开始到最后一个"/"及其右边所有字符


第二种也分为四种,分别介绍如下:

1、从左边第几个字符开始以及字符的个数,用法为:start:len,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。

结果是:http:

2、从左边第几个字符开始一直到结束,用法为:start,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${var:7}

其中的 7 表示左边第8个字符开始

结果是:www.你的域名.com/cut-string.html

3、从右边第几个字符开始以及字符的个数,用法:0-start:len,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${str:0-15:10}

其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。

结果是:cut-string

3、从右边第几个字符开始一直到结束,用法:0-start,例如:

str='http://www.你的域名.com/cut-string.html'

echo ${str:0-4}

其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。

结果是:html

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

第一页 上页 1 2 3 4 5 6 7 8 9 下页 最后页 [ 显示模式: 摘要 | 列表 ]