英国雷迪RD1000非金属管线探测仪

获取移动光猫管理员账号密码

针对设备型号

运营商:中国移动定制版;地区:广西;型号:烽火HG260GS-U;相关参数:GPON

前情提要 家里的光猫是集带WIFI一起的,所以没有另外装路由器。之前想进光猫后台设置一下,顺便改个密码,然后乱设置搞到不能上网,打电话让工作人员来恢复,他们上门来弄好了,说他把WIFI上网的密码也改成876543210,有点无语。之后一直用这个简单的密码用了一段时间,担心被蹭网,想改另一个,但进光猫时,发现用光猫背面的账号密码用不上去,原来是之前移动工作人员顺便把写在光猫背面的User登录密码也改了,但没告诉我。恢复出厂设置也不行!

后来我想方设法尝试登陆,找了网上的各种神级超级管理员密码,什么telecomadmin和nE7jA%5m、CMCCAdmin和aDm8H%MdA,都没用!

于是想到了一种思路,【ftp获取内部系统文件大法】。本质上每个光猫或路由都可以用ftp连接,不过如果是太高级的路由,像小米路由器那种,可能需要用到ssh这种高级的方式才能进入。但对于一般的运营商设备,可能就很简单。

不过很多时候,ftp功能默认是关闭状态的,这时就需要想办法打开它。

具体操作

一般的光猫都有一个工厂模式,默认密码账号如下:

账号:fiberhomehg2x0
密码:hg2x0
12

到这一步,登录进去,就能看到WIFI密码并可以进行修改了。 但是我们的最终目的是获取进入光猫的User或admin账号密码。

  • 在工厂模式管理界面里,将【FTP服务器】和【Telnet服务器】勾选打开,这时候ftp功能就被打开了。

  • 不过在工厂模式里,虽然展示ftp的账号密码,但是密码是非明文显示,可以通过修改自定义的密码,来进行后续的操作。(这里为了方便,将密码也改成了admin)

【关键!!!】

1、确保电脑接上了对应光猫的网络,打开浏览器,输入以下信息:(【ftp://】前缀协议别忘了加上)

到这一步,登录进去,就能看到WIFI密码并可以进行修改了。
但是我们的最终目的是获取进入光猫的User或admin账号密码。

在工厂模式管理界面里,将【FTP服务器】和【Telnet服务器】勾选打开,这时候ftp功能就被打开了。
不过在工厂模式里,虽然展示ftp的账号密码,但是密码是非明文显示,可以通过修改自定义的密码,来进行后续的操作。(这里为了方便,将密码也改成了admin)
==关键!!!==

确保电脑接上了对应光猫的网络,打开浏览器,输入以下信息:(【ftp://】前缀协议别忘了加上)
12345678

2、进入目录,打开 /fhconf 3、下载 backpresettings.conf 文件(或者进入 /fhbak,下载 resetConfig_keyParam.txt 文件) 4、记事本打开下载的文件 5、搜索 Username 或 TeleComAccount 关键词,看到类似以下信息:【=重要!!!=】

<Username>admin</Username>
<Password>Q21jYzEwMDg2Iw==</Password>
12

6、看到 Password 部分有一串乱码字符,实际上是base64码 7、打开百度 搜索 base64解码 8、将那串乱码粘贴进去,解码转换,会显示正常的密码,即可获得admin管理员的密码 9、打开 http://192.168.1.1 10、输入admin账号密码,进入光猫路由后台管理界面,大功告成!

总结

  • 知识点:光猫路由设备一般有:user模式、admin模式、工厂模式,每个模式下显示的管理界面都不同

  • 反思:理论上只要以上任何一步没有出错,很多别人家的路由器都可以像这样【软闯入】,并且顺利蹭网,甚至网络攻击、网络数据监控,所以各家网络路由设备开发厂商是不是真的有必要对系统进行更高级更安全的更新升级呢

安卓Android-x86 4.4联网设置教程 解决不能上网

  • Android-X86

    Android-X86

    Android-X86是一个可以PC上运行的安卓系统

    软件大小:339.25 MB下载

  Android-x86 4.4安装完成后一般都是不能上网的,需要给网卡设置IP地址和DNS服务器方可联网。Android-x86在本质上就是Linux系统,且Android-x86自带了终端(类似Windows的命令行),可以通过Linux命令直接设置上网参数。下面就随小编来来看看安卓Android-x86 4.4联网设置教程。

安卓Android-x86 4.4联网设置方法

方法一:自动获取IP(推荐)

1.打开“终端模拟器”。

安卓Android-x86 4.4联网设置教程 解决不能上网

2.输入“su”并回车,使终端模拟器获得root(超级用户)权限,直接点击【允许】。终端模拟器的提示符会变成“root..#”,表示正在使用的是超级账户。

安卓Android-x86 4.4联网设置教程 解决不能上网

3.输入“dhcpcd eth0” 使网卡自动获得IP。提示:如果失败,在终端输入“ip a”看最后一项是ethX(X代表0123等数字)。

安卓Android-x86 4.4联网设置教程 解决不能上网

4.继续输入“setprop net.dns1 114.114.114.114”,不提示任何信息就表示设置成功了。提示:小编使用的是114DNS,你也可以换成其他DNS地址。

方法二:设置静态IP地址

1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0

安卓Android-x86 4.4联网设置教程 解决不能上网

2.填写ip地址、子网掩码、网关、DNS等红框内的必填项目。点击“File”菜单,选择“Save”保存退出。

安卓Android-x86 4.4联网设置教程 解决不能上网

3.重启网络服务。在终端继续输入:service network restart

安卓Android-x86 4.4联网设置教程 解决不能上网

网络配置

剛安裝好的 Android-x86 4.0 是無法連線到網路的,因為還未設定網路的 IP 位址,這裡必須要手動地設定 IP 位置。

在 App 清單中開啟 Terminal Emulator。

開啟後會出現終端機介面,接著輸入 ip a 就會列出目前的網路卡。這裡可以看到 eth0 目前是還沒有設定 IP 的狀態

設定 IP 可以透過手動設定 IP 或者也可以透過 DHCP。

透過 DHCP 取得 IP

如果你的網路環境有 DHCP Server 的話,透過 DHCP 的方式取得 IP 是最簡單的方式。

在終端機輸入

su

dhcpcd eth0

接著就會自動取得 IP,可以再輸入 ip a,這時就會看到 eth0 已經透過 DHCP的方式取得 IP。

手動設定 IP

當然也可以透過手動設定 IP 的方式來設定 IP。

在終端機輸入

su ifconfig eth0 192.168.10.250 netmask 255.255.255.0 up route add default gw 192.168.10.1 dev eth0

#设置IP

root@android:/ # ifconfig eth0 192.168.0.173 netmask 255.255.255.0
ifconfig eth0 192.168.0.173 netmask 255.255.255.0

ifconfig wlan0 192.168.1.119 netmask 255.255.255.0

#添加网关

route add default gw 192.168.1.250 dev wlan0
root@android:/ # route add default gw 192.168.0.1 dev eth0

#設定 DNS Server,接著再設定 DNS Server

setprop net.eth0.dns1 192.168.1.250

setprop net.eth0.dns2 192.168.1.1
root@android:/ # setprop net.eth0.dns1 8.8.8.8

root@android:/ # setprop net.eth0.dns2 8.8.4.4

在終端機輸入

setprop net.dns1 8.8.8.8

設定完後就可以使用內建的瀏覽器上網試試看網路是否有設定成功。

到了這邊,安裝 Android-x86 4.0 的步驟就已經告一段落了,雖然可以上網,但是還是不能設定 Google 帳號,因為 Android-x86 4.0 只認得 WiFi 裝置,所以沒有 WiFi 裝置就會被當成沒有網路連線,希望這個功能可以在之後的版本被修正。

实例手机连接:

转自 http://www.biemmeitalia.net/blog/android-network-configuration/

通过shell命令设置(获取)IP、网关、dns信息,需要获取root权限

查看所有网络信息

C:\>adb shell
root@android:/ # netcfg
netcfg
ip6tnl0  DOWN                                   0.0.0.0/0   0x00000080 00:00:00:
00:00:00
gre0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:
00:00:00
eth0     UP                               192.168.0.180/24  0x00001043 00:00:00:
ec:0a:00
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:
00:00:00
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:
00:00:00
tunl0    DOWN                                   0.0.0.0/0   0x00000080 00:00:00:
00:00:00

查看eth0

root@android:/ # ifconfig eth0
ifconfig eth0
eth0: ip 192.168.0.180 mask 255.255.255.0 flags [up broadcast running multicast]

查看dns

root@android:/ # getprop net.eth0.dns1
getprop net.eth0.dns1
8.8.8.8

root@android:/ # getprop net.eth0.dns2
getprop net.eth0.dns2
8.8.4.4

设置ip

root@android:/ # ifconfig eth0 192.168.0.173 netmask 255.255.255.0
ifconfig eth0 192.168.0.173 netmask 255.255.255.0

root@android:/ # ifconfig eth0
ifconfig eth0
eth0: ip 192.168.0.173 mask 255.255.255.0 flags [up broadcast running multicast]

设置网关Gateway

root@android:/ # route add default gw 192.168.0.1 dev eth0
route add default gw 192.168.0.1 dev eth0

添加dns

root@android:/ # setprop net.eth0.dns1 8.8.8.8
setprop net.eth0.dns1 8.8.8.8

root@android:/ # setprop net.eth0.dns2 8.8.4.4
setprop net.eth0.dns2 8.8.4.4

查看eth配置信息

root@android:/ # getprop | grep eth0
getprop | grep eth0
[dhcp.eth0.dns1]: [192.168.0.1]
[dhcp.eth0.dns2]: []
[dhcp.eth0.dns3]: []
[dhcp.eth0.dns4]: []
[dhcp.eth0.gateway]: [192.168.0.1]
[dhcp.eth0.ipaddress]: [192.168.0.180]
[dhcp.eth0.leasetime]: [3600]
[dhcp.eth0.mask]: [255.255.255.0]
[dhcp.eth0.pid]: [13800]
[dhcp.eth0.reason]: [PREINIT]
[dhcp.eth0.result]: [failed]
[dhcp.eth0.server]: [192.168.0.1]
[dhcp.eth0.vendorInfo]: []
[net.change]: [net.eth0.dns2]
[net.eth0.dns1]: [8.8.8.8]
[net.eth0.dns2]: [8.8.4.4]

 

linux 中更改用户权限和用户组的命令

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。

文件或目录的访问权 限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文 件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。

有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:

  1. $ ls -l sobsrc. tgz
  2. rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz

横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。例如:

– rw- r– r–

普通文件 文件主 组用户 其他用户

是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。

确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。

下面分别对这些命令加以介绍。

chmod 命令

chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。

以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:

1.打开终端。输入”su”(没有引号)

2.接下来会要你输入密码,输入你的root密码。

3.假设我的文件夹在主目录里,地址为  /var/home/dengchao/cc  。假设我要修改文件权限为777,则在终端输入  chmod  777 /var/home/userid/cc 文件夹的权限就变为了777。

如果是修改文件夹及子文件夹权限可以用  chmod -R 777 /var/home/userid/cc

具体的权限(例如777的含意等)在下面解释下:

1.777有3位,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限。

其中每一位的权限用数字来表示。具体有这些权限:

  • r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
  • w(Write,写入,权限值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
  • x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

2. 首先我们来看如何确定单独一位上的权限数值,例如最高位表示文件所有者权限数值,当数字为7时,7用“rwx”表示 –{4(r)+2(w)+1(x)=7}–又如果数值为6,则用“rw-”表示–{4(r)+2(w)+0(x)=6}–,”-”表示不具备权限,这里表 示不具备“执行”权限。

假如我们设定其他用户的访问权限为 “r–”,则数值为4+0+0=4

一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111

而二进制的111就是7。

3.我们再来看下怎么确定3个数位上的权限。假如我们要给一个文件设置权限,具体权限如下:

文件所有者有“读”、“写”、“执行”权限,群组用户有“读”权限,其他用户有“读”权限,则对应的字母表示为”rwx r– r–“,对应的数字为744

一般都是最高位表示文件所有者权限值,第二位表示群组用户权限,最低位表示其他用户权限。

下面来举些例子熟悉下。

权限 数值
rwx rw- r– 764
rw- r– r– 644
rw- rw- r– 664

该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

1. 文字设定法

chmod [who] [+ | – | =] [mode] 文件名¼

命令中各选项的含义为:

操作对象who可是下述字母中的任一个或者它们的组合:

  • u 表示“用户(user)”,即文件或目录的所有者。
  • g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
  • o 表示“其他(others)用户”。
  • a 表示“所有(all)用户”。它是系统默认值。

操作符号可以是:

  • + 添加某个权限。
  • – 取消某个权限。
  • = 赋予给定权限并取消其他所有权限(如果有的话)。
  • 设置mode所表示的权限可用下述字母的任意组合:
  • r 可读。
  • w 可写。
  • x 可执行。
  • X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
  • s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
  • t 保存程序的文本到交换设备上。
  • u 与文件属主拥有一样的权限。
  • g 与和文件属主同组的用户拥有一样的权限。
  • o 与其他用户拥有一样的权限。
  • -c : 若该档案权限确实已经更改,才显示其更改动作
  • -f : 若该档案权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

文件名:以空格分开的要改变权限的文件列表,支持通配符。在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example使同组和其他用户对文件example 有读权限。

例1:

  1. $ chmod a+x sort

即设定文件sort的属性为:

文件属主(u) 增加执行权限

与文件属主同组用户(g) 增加执行权限

其他用户(o) 增加执行权限

例2:

  1. $ chmod ug+w,o-x text

即设定文件text的属性为:

文件属主(u) 增加写权限

与文件属主同组用户(g) 增加写权限

其他用户(o) 删除执行权限

例3:

  1. $ chmod u+s a.out

假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):

  1. rws–x–x 1 inin users 7192 Nov 4 14:22 a.out

并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——-”,即该文件只有其属主具有读写权限。

当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。

因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。

例4:

  1. $ chmod a–x mm.txt
  2. $ chmod –x mm.txt
  3. $ chmod ugo–x mm.txt

以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。

2. 数字设定法

我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。

例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

数字设定法的一般形式为:chmod [mode] 文件名¼

例1:

  1. $ chmod 644 mm.txt
  2. $ ls –l

即设定文件mm.txt的属性为:

  1. rw-r–r– 1 inin users 1155 Nov 5 11:22 mm.txt

文件属主(u)inin 拥有读、写权限

与文件属主同组人用户(g) 拥有读权限

其他人(o) 拥有读权限

例2:

  1. $ chmod 750 wch.txt
  2. $ ls –l
  3. rwxr-x— 1 inin users 44137 Nov 12 9:22 wchtxt

即设定wchtxt这个文件的属性为:

文件主本人(u)inin 可读/可写/可执行权

与文件主同组人(g) 可读/可执行权

其他人(o) 没有任何权限

chgrp命令

功能:改变文件或目录所属的组。

语法:chgrp [选项] group filename¼

参数:

  • -c或–changes 效果类似”-v”参数,但仅回报更改的部分。
  • -f或–quiet或–silent  不显示错误信息。
  • -h或–no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。
  • -R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v或–verbose  显示指令执行过程。
  • –help  在线帮助。
  • –reference=&lt;参考文件或目录&gt;  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
  • –version  显示版本信息。

该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。

该命令的各选项含义为:

– R 递归式地改变指定目录及其下的所有子目录和文件的属组。

例1:

  1. chgrp – R book /opt/local /book

改变/opt/local /book/及其子目录下的所有文件的属组为book。

chown 命令

功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户yusi,为了让用户yusi能够存取这个文件,root用户应该把这个文件的属主设为yusi,否则,用户yusi无法存取这个文件。

语法:chown [选项] 用户或组 文件

说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。

参数说明:

  • user : 新的档案拥有者的使用者 ID
  • group : 新的档案拥有者的使用者群体(group)
  • -c : 若该档案拥有者确实已经更改,才显示其更改动作
  • -f : 若该档案拥有者无法被更改也不要显示错误讯息
  • -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
  • -v : 显示拥有者变更的详细资料
  • -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

例1:把文件yusi123.com的所有者改为yusi。

  1. chown yusi yusi123.com

例2:把目录/demo及其下的所有文件和子目录的属主改成yusi,属组改成users。

  1. $ chown – R yusi.users /demo

例如:chown qq /home/qq  (把home目录下的qq目录的拥有者改为qq用户)

例如:chown -R qq /home/qq  (把home目录下的qq目录下的所有子文件的拥有者改为qq用户)

 

用户组 chgrp -R foldname zdz

chown -R  所有者用户名.组名 文件夹名称
例如:chown -R  zdz.nginx KooBox
root@ali-qss:/var/www# chown -R www-data.www-data html

命令详解直接搜索就很多了,这里不多说了。

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

chmod命令使用数字修改文件权限

Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:

r –> 4
w –> 2
x –> 1

由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。

拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:

所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5

所以,此权限对应的权限值就是 765。

使用数字修改文件权限的 chmod 命令基本格式为:

[root@localhost ~]# chmod [-R] 权限值 文件名

-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。

例如,使用如下命令,即可完成对 .bashrc 目录文件的权限修改:

[root@localhost ~]# ls -al .bashrc
-rw-r–r–. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod 777 .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc

再举个例子,通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r–(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可。

chmod命令使用字母修改文件权限

既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。

使用字母修改文件权限的 chmod 命令,其基本格式如图 1 所示。

chmod 命令基本格式
图 1 chmod 命令基本格式

例如,如果我们要设定 .bashrc 文件的权限为 rwxr-xr-x,则可执行如下命令:

[root@localhost ~]# chmod u=rwx,go=rx .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc

再举个例子,如果想要增加 .bashrc 文件的每种用户都可做写操作的权限,可以使用如下命令:

[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod a+w .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc

增加权限给当前用户 chmod +wx filename

chmod -R 777 /upload

语法:chmod [who] [+ | – | =] [mode] 文件名

命令中各选项的含义为

u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
– 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。

实例

修改文件可读写属性的方法
例如:把index.html 文件修改为可写可读可执行:
chmod 777 index.html

要修改目录下所有文件属性可写可读可执行:
chmod 777 *.*

把文件夹名称与后缀名用*来代替就可以了。
比如:修改所有htm文件的属性:
chmod 777 *.htm

修改文件夹属性的方法
把目录 /images/small 修改为可写可读可执行
chmod 777 /images/small

修改目录下所有的文件夹属性
chmod 777 *

把文件夹名称用*来代替就可以了

要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行

chmod -R 777 /upload

总结linux下目录和文件的权限区别

文件:读文件内容(r)、写数据到文件(w)、作为命令执行文件(x)。
目录:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的连结)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件和子目录)
具体说就是:
(1)有只读权限的用户不能用cd进入该目录:还必须有执行权限才能进入。
(2)有执行权限的用户只有在知道文件名,并拥有读权利的情况下才可以访问目录下的文件。
(3)必须有读和执行权限才可以ls列出目录清单,或使用cd命令进入目录。
(4)有目录的写权限,可以创建、删除或修改目录下的任何文件或子目录,即使使该文件或子目录属于其他用户也是如此。

查看目录权限

查看文件权限的语句:
在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)
那么就会出现相类似的信息,主要都是这些:
-rw-rw-r–
一共有10位数
其中: 最前面那个 – 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r– 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
– 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ————4
w ———–2
x ————1
– ————0
行动:
表示添加权限
– 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw——- (600) 只有所有者才有读和写的权限
-rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx—— (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限

chgrp 命令用于修改文件(或目录)的所属组。

为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写。

chgrp 命令的用法很简单,其基本格式为:

[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)

-R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。

使用此命令需要注意的一点是,要被改变的群组名必须是真实存在的,否则命令无法正确执行,会提示 “invaild group name”。

举个例子,当以 root 身份登录 Linux 系统时,主目录中会存在一个名为 install.log 的文件,我们可以使用如下方法修改此文件的所属组:

[root@localhost ~]# groupadd group1
#新建用于测试的群组 group1
[root@localhost ~]# chgrp group1 install.log
#修改install.log文件的所属组为group1
[root@localhost ~]# ll install.log
-rw-r–r–. 1 root group1 78495 Nov 17 05:54 install.log
#修改生效
[root@localhost ~]# chgrp testgroup install.log
chgrp: invaild group name ‘testgroup’

可以看到,在具有 group1 群组的前提下,我们成功修改了 install.log 文件的所属组,但我们再次试图将所属组修改为 testgroup 时,命令执行失败,就是因为系统的 /etc/group 文件中,没有 testgroup 群组。

BaiduSubmit:度娘WordPress结构化数据插件(改进版)

张戈博客曾多次提到一个会造成百度不收录问题的原因:如果网站存在实时推送机制(比如安装了百度官方推出的 BaiduSubmit 插件),那么发布文章后,在百度收录之前这段时间内,无论如何都不要再去更新文章内容了,因为每次提交更新都会触发 BaiduSubmit 的实时推送机制,通知百度内容更新了!

在百度收录之前,如果频繁向百度推送更新通知,文章很可能就会被百度丢入沙盒,短时间内不会在百度搜索展现该条收录!

个人大胆猜测,造成这种现象的根本原因是收录之前,如果频繁更新内容,百度会认为这个内容是不稳定的。这个机制估计是百度出于用户体验考虑,百度希望用户看到的内容是和搜索到的一样,而不是百度收录了 A 内容,就因为你中途改成了 B 内容,导致用户通过 A 关键字搜索,却没有得到预期的结果!

因此,网站在发布文章之后,稳定收录并展示之前,切忌频繁修改内容!

但是,我作为一名中度强迫症患者,只要看到文章有错别字,或者排版等瑕疵,我都会立即修改!相信和我一样的朋友,肯定不在少数!

下面就分享一下解决办法。

一、关闭实时推送

①、关闭 Baidusubmit 实时推送

如果不想每次更新文章都触发推送机制,那么最简单的方法就是在插件后台关闭实时推送即可:

这个方法是最简单的,但是存在一定缺憾:关闭实时推送之后,新发布文章也不会再推送给百度了。只会在百度提交一份 sitemap 数据,让百度定时抓取。

在博客没有开通 sitemap 权限的情况下,那这个插件就相当于在百度提交了 sitemap 数据(上图只有在开通了 sitemap 权限的情况下才可以看到)。

当然,如果你不怕麻烦,也可以在发布新文章的时候启用实时推送,然后在手动关闭即可。

②、关闭 WordPress 实时推送

除了这个插件会实时推送数据,WordPress 其实还自带了一个更新通知功能:

直接将百度的 PING 服务删除即可,其他的删不删应该都没关系。

二、修改插件机制

相比于第一种方法,下面的方法就更加合理:只有在文章发布的时候推送数据到百度,而后续更新文章则不会触发插件的推送机制,强烈推荐使用!

方法①、当网站未禁用修订功能时,可通过修订判断来终止插件推送:

WordPress 的修订功能默认是打开的,那么我们就可以用下面这个语句来判断是否是更新动作。

 if (wp_is_post_revision($postid)) return;   //更新文章不往下执行,直接返回

修改方法:

编辑 baidusubmit 插件下的 main.php,找到 static function publishPost($postid) { ,在之后添加以上代码即可:

 static function publishPost($postid)
    {
        if (wp_is_post_revision($postid)) return; //更新文章时不推送
        require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . './inc/sitemap.php';
        add_post_meta($postid, 'Baidusubmit', 1, true);
        $schema = BaidusubmitSitemap::genSchemaByPostId($postid, $xpost);
        if ('publish' != $xpost->post_status || '' != $xpost->post_password) {
            self::deletePost($postid);
            return;
        }
/* 以下代码略 */

Ps:可能你会疑问,如何判断已修改成功,更新时插件是否依然在推送数据?有个很简单的判断办法:更新文章时,如果有推送数据,那么花费的时间将比不推送数据要长的多!差距非常明显!

当然,如果你无法确定是否生效,建议使用下面这种方法,绝对可靠!

方法②、当网站禁用了修订功能时,可通过自定义栏目来终止插件推送:

我在测试上面的代码时,发现根本不生效!看了半天,才发现我的博客曾经把修订功能给禁用了!查看修订功能是否被禁用,只要打开网站根目录下的 wp-config.php,查看是否存在一下代码:

/** 禁用自动修订版本 **/
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', 36000);

禁用修订功能是为了节省数据库主键,最大程度保证文章 ID 的连续性,估计这样设置过的博客也不在少数。

既然禁用了修订功能,那第①个方法就无法使用了!这时候,我们可以借助 WordPress 的自定义栏目功能来解决这个问题。

原理很简单:文章首次发布时,会向百度推送数据,并且在对应文章中新增一个自定义栏目:Baidusubmit=1

更新文章的时候,插件先判断自定义栏目,如果 Baidusubmit=1,则不再推送,从而解决了重复推送问题。

修改方法:

还是编辑 baidusubmit 插件下的 main.php,找到 static function publishPost($postid) {,在之后添加代码:

//如果检测到Baidusubmit=1,则返回
if(get_post_meta($postid,'Baidusubmit',true) == 1) return;
//若推送到百度,则新增自定义栏目
add_post_meta($postid, 'Baidusubmit', 1, true);

最终如图所示:

发布文章之后,文章编辑界面的自定义栏目中将出现如下键值:

后续,如果想让插件再次向百度推送文章,只需要将这个值改为 0 或其他数值即可。

三、插件下载地址

考虑到代码盲站长,特将以上 2 种修改后的 baidusubmit 插件打包上传,请根据实际需求下载安装即可:

博客未禁用修订功能,请下载【插件①】,不清楚的推荐下载【插件②】

下载地址

安装时,先删除原有的 baidusubmit 插件,然后上传安装即可。

WordPress自动采集发布插件WP-AutoPost使用教程

WP-AutoPost中文免费下载地址 http://wp-autopost.org/zh

一、安装WP-AutoPost

和安装其他WordPress插件一样,直接上传到插件目录,激活即可使用,无需再进行额外设置或修改代码。

二、创建采集任务

点击“新建任务”后,输入任务名称,即可创建新任务,创建好新任务之后可以在任务列表中查看到该任务,就可对该任务进行更多设置。

三、基本设置功能

在基本设置选项卡下,可以进行如下设置:

  • 任务名称:可以修改任务名称
  • 分类目录:该任务采集文章发布到的分类目录
  • 作者:该任务采集文章的发布作者,必须是WordPress里的注册用户
  • 更新时间间隔:间隔多长时间检测一次该采集任务下是否有新文章可以更新
  • 字符集:采集目标网站的字符集编码,默认为UTF8,如果目标网页字符集编码不是UTF8,抓取的网页会出现乱码,设置正确的字符集即可解决该问题(如何正确设置字符集
  • 下载远程图片:如果该任务下采集的文章里包含图片,可以选择是否下载远程图片到本地服务器,选择下载远程图片,可进一步选择是否将下载的图片信息保存到WordPress媒体库中
  • 自动标签:选择是否使用自动标签
  • 标签列表:使用自动标签后如果文章包含列表里的关键词,将自动添加标签
  • 匹配完整的单词:该设置对英文文章有效,中文文章请勿启用该设置

四、文章来源设置

在该选项卡下我们需要设置文章来源的 文章列表网址及 具体文章的匹配规则

我们以采集“新浪互联网新闻”为例,文章列表网址为http://roll.tech.sina.com.cn/internet_worldlist/index.shtml 因此在 手工指定文章列表网址 中输入该网址即可,如下所示:

之后需要设置该文章列表网址下具体文章网址的匹配规则

五、文章网址匹配规则

文章网址匹配规则的设置非常简单,无需复杂设置,提供两种匹配模式,可以使用URL通配符匹配,也可以使用CSS选择器进行匹配,通常使用URL通配符匹配较为简单。

1. 使用URL通配符匹配

通过点击列表网址 http://roll.tech.sina.com.cn/internet_worldlist/index.shtml 上的文章,我们可以发现每篇文章的URL都为如下结构

http://tech.sina.com.cn/i/2013-06-27/16328485884.shtml

因此将URL中变化的数字或字母替换为通配符 (*) 即可,如:http://tech.sina.com.cn/i/(*)/(*).shtml

2. 使用CSS选择器进行匹配

使用CSS选择器进行匹配,我们只需要设置 文章网址的CSS选择器 即可(不知道CSS选择器为何物,一分钟学会如何设置CSS选择器),通过查看列表网址 http://roll.tech.sina.com.cn/internet_worldlist/index.shtml 的源代码即可轻松设置,找到该列表网址下具体文章的超链接的代码,如下所示:

可以看到,文章的超链接a标签在class为“contList”的标签内部,因此 文章网址的CSS选择器 只需要设置为 .contList a  即可,如下所示:

设置完成之后,不知道设置是否正确,可以点击上图中的测试按钮,如果设置正确,将列出该列表网址下所有文章名称和对应的网页地址,如下所示:

六、文章抓取设置

在该选项卡下,我们需要设置文章标题和文章内容的匹配规则,提供两种方式进行设置,推荐使用CSS选择器方式,使用该方式更为简单,精确。(不知道CSS选择器为何物,一分钟学会如何设置CSS选择器

我们只需要设置文章标题CSS选择器文章内容CSS选择器,即可准确抓取文章标题和文章内容。

在文章来源设置里,我们以采集”新浪互联网新闻“为例,这里还是以该例子讲解,通过查看列表网址 http://roll.tech.sina.com.cn/internet_worldlist/index.shtml 下某一篇文章的源代码即可轻松设置,例如,我们通过查看某篇具体文章 http://tech.sina.com.cn/n/i/2013-06-10/06308430630.shtml 的源代码,如下所示:

可以看到,文章标题在id为“artibodyTitle”的标签内部,因此文章标题CSS选择器只需要设置为#artibodyTitle 即可;

同样的,找到文章内容的相关代码:

可以看到,文章内容在id为“artibody”的标签内部,因此文章内容CSS选择器只需要设置为 #artibody 即可;如下所示:

设置完成之后,不知道设置是否正确,可点击测试按钮,输入测试地址,如果设置正确,将显示出文章标题和文章内容,方便检查设置

七、抓取文章分页内容

如果文章内容过长,有多个分页同样可以抓取全部内容,这时需要设置文章分页链接CSS选择器,通过查看具体文章网址源代码,找到分页链接的地方,例如某篇文章分页链接代码如下:

可以看到,分页链接A标签在class为 “page-link” 的标签内部

因此,文章分页链接CSS选择器设置为 .page-link a 即可,如下所示:

如果勾选当发表时也分页时,发表文章也将同样被分页,如果你的WordPress主题不支持 <!- – nextpage – -> 标签,请勿勾选。

八、文章内容过滤功能

文章内容过滤功能,可过滤掉正文中不希望发布的内容(如广告代码,版权信息等),可设置两个关键词,删除掉两个关键词之间的内容,关键词2可以为空,表示删除掉关键词1之后的所有内容。

如下所示,我们通过测试抓取文章后发现文章里有不希望发布的内容,切换到HTML显示,找到该内容的HTML代码,分别设置两个关键词即可过滤掉该内容。

如上所示,如果我们希望过滤掉上面<div class=”ep-source cDGray”>和</div>之间的内容,添加如下设置即可

如果需要过滤掉多处内容,可以添加多组设置。

九、HTML标签过滤功能

HTML标签过滤功能,可过滤掉采集文章中的超链接(a标签),<script>和<style>等标签下不必要的代码。

下面是几个例子:

  • 如果需要过滤掉文章中的超链接,只需输入 a 即可,是否删除标签内容 选择否
  • 如果要过滤掉文章中包含的<script>或<style>不必要的代码,只需输入对应标签名称,是否删除标签内容选择是

十、关键词替换、自动添加自定义超链接

可以将正文或标题中的关键词进行替换,同时也支持正文自定义超链接;

例如:需要将文章里的wordpress自动添加链接到http://wordpress.org/,只需设置 wordpress 替换为 <a href=”http://wordpress.org/”>wordpress</a> 即可

如下所示:

十一、解决乱码问题

为什么产生乱码

WP-AutoPost 采集网页时默认字符集为UTF-8,如果目标网页的字符集不是UTF-8,采集的内容可能会出现乱码。

解决乱码问题

解决方法非常简单,只需查看目标网页的字符集,设置正确的字符集即可。

打开目标网页源代码,一般在最前面的位置,找到有charset的代码部分:

如上所示,该网页的目标编码为gb2312,设置相同的字符集即可:

(Service iptables stop/start)关闭/打开防火墙 Failed to stop iptables.service: Unit iptables.service not loaded.

背景: 

测试部署NetCore 项目到linux 系统时,窗口显示项目部署成功;但是本机无法访问(linux 在虚拟机上[ centos 7.6] );  如下图↓

 

 

能够相互ping  通,(Xshell 连接正常。),在centos 上 也能正常访问,后来记起在进行linux   安装成功后,没有关闭防火墙,初步猜测是由于没有关闭防火墙导致,那关闭防火墙不就可以了?

二、操作

1、打开linux 终端,输入:  service  iptables stop   ,就提示 标题展示的异常;

 

 

2、然后输入:systemctl stop firewalld   (暂时关闭防火墙)

查看防火墙状态:systemctl status firewalld

 

 

 

成功了!!!!

三、回顾总结

经过查找发现:在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理 ; 如果想要使用 service iptables start/stop 命令,需要下载     iptables-services

1、在 Centos 7 下下载 iptables-services 时,需要执行以下命令

systemctl stop firewalld     –关闭防火墙

      systemctl mask firewalld

yum install iptables-services   –安装iptables-services

       systemctl enable iptables    –设置开机启动

service iptables save       –保存

2、操作linux 防火墙命令:

复制代码
1:查看防火状态
    systemctl status firewalld
    service  iptables status

2:暂时关闭防火墙
    systemctl stop firewalld
    service  iptables stop

3:永久关闭防火墙
    systemctl disable firewalld
    chkconfig iptables off

4:重启防火墙
    systemctl enable firewalld
    service iptables restart  

5:永久关闭后重启(未测试)
    chkconfig iptables on
复制代码

 

查找资料:1、https://www.cnblogs.com/jxldjsn/p/10794171.html

2、https://blog.csdn.net/c233728461/article/details/52679558/

查看Linux服务器中所有正在运行的进程服务

 Linux 中所有正在运行的服务。大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/init.d/service-name status,而在 systemd 初始化系统中使用 systemctl status service-name。

查看服务进程:ps aux

查看服务cpu利用:top

查看服务对应端口:netstat -nlp

以上命令可以清楚地显示该服务是否在服务器上运行,这也是每个 Linux 管理员都该知道的非常简单和基础的命令。

如果你对系统环境并不熟悉,也不清楚系统在运行哪些服务,你会如何检查?

是的,我们的确有必要这样检查一下。这将有助于我们了解系统上运行了什么服务,以及哪些是必要的、哪些需要被禁用。

init(初始化initialization的简称)是在系统启动期间运行的第一个进程。init 是一个守护进程,它将持续运行直至关机。

大多数 Linux 发行版都使用如下的初始化系统之一:

System V 是更老的初始化系统

Upstart 是一个基于事件的传统的初始化系统的替代品

systemd 是新的初始化系统,它已经被大多数最新的 Linux 发行版所采用

什么是 System V(SysV)

SysV(意即 System V) 初始化系统是早期传统的初始化系统和系统管理器。由于 sysVinit 系统上一些长期悬而未决的问题,大多数最新的发行版都适用于 systemd 系统。

什么是 Upstart 初始化系统

Upstart 是一个基于事件的 /sbin/init 的替代品,它控制在启动时的任务和服务的开始,在关机时停止它们,并在系统运行时监控它们。

它最初是为 Ubuntu 发行版开发的,但其是以适合所有 Linux 发行版的开发为目标的,以替换过时的 System-V 初始化系统。

什么是 systemd

systemd 是一个新的初始化系统以及系统管理器,它已成为大多数 Linux 发行版中非常流行且广泛适应的新的标准初始化系统。systemctl 是一个 systemd 管理工具,它可以帮助我们管理 systemd 系统。

方法一:如何在 System V(SysV)系统中查看运行的服务

以下命令可以帮助我们列出 System V(SysV) 系统中所有正在运行的服务。

如果服务很多,我建议使用文件查看命令,如 less、more 等,以便得到清晰的结果。

service –status-all

service –status-all | more

service –status-all | less

abrt-ccpp hook is installed

abrtd (pid 2131) is running…

abrt-dump-oops is stopped

acpid (pid 1958) is running…

atd (pid 2164) is running…

auditd (pid 1731) is running…

Frequency scaling enabled using ondemand governor

crond (pid 2153) is running…

hald (pid 1967) is running…

htcacheclean is stopped

httpd is stopped

Table: filter

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT all ::/0 ::/0 state RELATED,ESTABLISHED

2 ACCEPT icmpv6 ::/0 ::/0

3 ACCEPT all ::/0 ::/0

4 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:80

5 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:21

6 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:22

7 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:25

8 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:2082

9 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:2086

10 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:2083

11 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:2087

12 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:10000

13 REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

1 REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

iptables: Firewall is not running.

irqbalance (pid 1826) is running…

Kdump is operational

lvmetad is stopped

mdmonitor is stopped

messagebus (pid 1929) is running…

SUCCESS! MySQL running (24376)

rndc: neither /etc/rndc.conf nor /etc/rndc.key was found

named is stopped

netconsole module not loaded

Usage: startup.sh { start | stop }

Configured devices:

lo eth0 eth1

Currently active devices:

lo eth0

ntpd is stopped

portreserve (pid 1749) is running…

master (pid 2107) is running…

Process accounting is disabled.

quota_nld is stopped

rdisc is stopped

rngd is stopped

rpcbind (pid 1840) is running…

rsyslogd (pid 1756) is running…

sandbox is stopped

saslauthd is stopped

smartd is stopped

openssh-daemon (pid 9859) is running…

svnserve is stopped

vsftpd (pid 4008) is running…

xinetd (pid 2031) is running…

zabbix_agentd (pid 2150 2149 2148 2147 2146 2140) is running…

执行以下命令,可以只查看正在运行的服务:

service –status-all | grep running

crond (pid 535) is running…

httpd (pid 627) is running…

mysqld (pid 911) is running…

rndc: neither /etc/rndc.conf nor /etc/rndc.key was found

rsyslogd (pid 449) is running…

saslauthd (pid 492) is running…

sendmail (pid 509) is running…

sm-client (pid 519) is running…

openssh-daemon (pid 478) is running…

xinetd (pid 485) is running…

运行以下命令以查看指定服务的状态:

service –status-all | grep httpd

httpd (pid 627) is running…

或者,使用以下命令也可以查看指定服务的状态:

service httpd status

httpd (pid 627) is running…

使用以下命令查看系统启动时哪些服务会被启用:

chkconfig –list

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off

httpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off

ip6tables 0:off 1:off 2:on 3:off 4:on 5:on 6:off

iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

modules_dep 0:off 1:off 2:on 3:on 4:on 5:on 6:off

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

named 0:off 1:off 2:off 3:off 4:off 5:off 6:off

netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off

netfs 0:off 1:off 2:off 3:off 4:on 5:on 6:off

network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

nmb 0:off 1:off 2:off 3:off 4:off 5:off 6:off

nscd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

portreserve 0:off 1:off 2:on 3:off 4:on 5:on 6:off

quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off

rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off

restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off

rpcbind 0:off 1:off 2:on 3:off 4:on 5:on 6:off

rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

saslauthd 0:off 1:off 2:off 3:on 4:off 5:off 6:off

sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off

smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off

snmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

snmptrapd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

udev-post 0:off 1:on 2:on 3:off 4:on 5:on 6:off

winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off

xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

xinetd based services:

chargen-dgram: off

chargen-stream: off

daytime-dgram: off

daytime-stream: off

discard-dgram: off

discard-stream: off

echo-dgram: off

echo-stream: off

finger: off

ntalk: off

rsync: off

talk: off

tcpmux-server: off

time-dgram: off

time-stream: off

方法二:如何在 System V(SysV)系统中查看运行的服务

另外一种在 Linux 系统上列出运行的服务的方法是使用 initctl 命令:

initctl list

rc stop/waiting

tty (/dev/tty3) start/running, process 1740

tty (/dev/tty2) start/running, process 1738

tty (/dev/tty1) start/running, process 1736

tty (/dev/tty6) start/running, process 1746

tty (/dev/tty5) start/running, process 1744

tty (/dev/tty4) start/running, process 1742

plymouth-shutdown stop/waiting

control-alt-delete stop/waiting

rcS-emergency stop/waiting

readahead-collector stop/waiting

kexec-disable stop/waiting

quit-plymouth stop/waiting

rcS stop/waiting

prefdm stop/waiting

init-system-dbus stop/waiting

ck-log-system-restart stop/waiting

readahead stop/waiting

ck-log-system-start stop/waiting

splash-manager stop/waiting

start-ttys stop/waiting

readahead-disable-services stop/waiting

ck-log-system-stop stop/waiting

rcS-sulogin stop/waiting

serial stop/waiting

方法三:如何在 systemd 系统中查看运行的服务

以下命令帮助我们列出 systemd 系统中所有服务:

systemctl

UNIT LOAD ACTIVE SUB DESCRIPTION

sys-devices-virtual-block-loop0.device loaded active plugged /sys/devices/virtual/block/loop0

sys-devices-virtual-block-loop1.device loaded active plugged /sys/devices/virtual/block/loop1

sys-devices-virtual-block-loop2.device loaded active plugged /sys/devices/virtual/block/loop2

sys-devices-virtual-block-loop3.device loaded active plugged /sys/devices/virtual/block/loop3

sys-devices-virtual-block-loop4.device loaded active plugged /sys/devices/virtual/block/loop4

sys-devices-virtual-misc-rfkill.device loaded active plugged /sys/devices/virtual/misc/rfkill

sys-devices-virtual-tty-ttyprintk.device loaded active plugged /sys/devices/virtual/tty/ttyprintk

sys-module-fuse.device loaded active plugged /sys/module/fuse

sys-subsystem-net-devices-enp0s3.device loaded active plugged 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)

-.mount loaded active mounted Root Mount

dev-hugepages.mount loaded active mounted Huge Pages File System

dev-mqueue.mount loaded active mounted POSIX Message Queue File System

run-user-1000-gvfs.mount loaded active mounted /run/user/1000/gvfs

run-user-1000.mount loaded active mounted /run/user/1000

snap-core-3887.mount loaded active mounted Mount unit for core

snap-core-4017.mount loaded active mounted Mount unit for core

snap-core-4110.mount loaded active mounted Mount unit for core

snap-gping-13.mount loaded active mounted Mount unit for gping

snap-termiusx2dapp-8.mount loaded active mounted Mount unit for termius-app

sys-fs-fuse-connections.mount loaded active mounted FUSE Control File System

sys-kernel-debug.mount loaded active mounted Debug File System

acpid.path loaded active running ACPI Events Check

cups.path loaded active running CUPS Scheduler

systemd-ask-password-plymouth.path loaded active waiting Forward Password Requests to Plymouth Directory Watch

systemd-ask-password-wall.path loaded active waiting Forward Password Requests to Wall Directory Watch

init.scope loaded active running System and Service Manager

session-c2.scope loaded active running Session c2 of user magi

accounts-daemon.service loaded active running Accounts Service

acpid.service loaded active running ACPI event daemon

anacron.service loaded active running Run anacron jobs

apache2.service loaded active running The Apache HTTP Server

apparmor.service loaded active exited AppArmor initialization

apport.service loaded active exited LSB: automatic crash report generation

aptik-battery-monitor.service loaded active running LSB: start/stop the aptik battery monitor daemon

atop.service loaded active running Atop advanced performance monitor

atopacct.service loaded active running Atop process accounting daemon

avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack

colord.service loaded active running Manage, Install and Generate Color Profiles

console-setup.service loaded active exited Set console font and keymap

cron.service loaded active running Regular background program processing daemon

cups-browsed.service loaded active running Make remote CUPS printers available locally

cups.service loaded active running CUPS Scheduler

dbus.service loaded active running D-Bus System Message Bus

postfix.service loaded active exited Postfix Mail Transport Agent

UNIT 相应的 systemd 单元名称

LOAD 相应的单元是否被加载到内存中

ACTIVE 该单元是否处于活动状态

SUB 该单元是否处于运行状态(LCTT 译注:是较于 ACTIVE 更加详细的状态描述,不同的单元类型有不同的状态。)

DESCRIPTION 关于该单元的简短描述

以下选项可根据类型列出单元:

systemctl list-units –type service

UNIT LOAD ACTIVE SUB DESCRIPTION

accounts-daemon.service loaded active running Accounts Service

acpid.service loaded active running ACPI event daemon

anacron.service loaded active running Run anacron jobs

apache2.service loaded active running The Apache HTTP Server

apparmor.service loaded active exited AppArmor initialization

apport.service loaded active exited LSB: automatic crash report generation

aptik-battery-monitor.service loaded active running LSB: start/stop the aptik battery monitor daemon

atop.service loaded active running Atop advanced performance monitor

atopacct.service loaded active running Atop process accounting daemon

avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack

colord.service loaded active running Manage, Install and Generate Color Profiles

console-setup.service loaded active exited Set console font and keymap

cron.service loaded active running Regular background program processing daemon

cups-browsed.service loaded active running Make remote CUPS printers available locally

cups.service loaded active running CUPS Scheduler

dbus.service loaded active running D-Bus System Message Bus

fwupd.service loaded active running Firmware update daemon

getty@tty1.service loaded active running Getty on tty1

grub-common.service loaded active exited LSB: Record successful boot for GRUB

irqbalance.service loaded active running LSB: daemon to balance interrupts for SMP systems

keyboard-setup.service loaded active exited Set the console keyboard layout

kmod-static-nodes.service loaded active exited Create list of required static device nodes for the current kernel

以下选项可帮助您根据状态列出单位,输出与前例类似但更直截了当:

systemctl list-unit-files –type service

UNIT FILE STATE

accounts-daemon.service enabled

acpid.service disabled

alsa-restore.service static

alsa-state.service static

alsa-utils.service masked

anacron-resume.service enabled

anacron.service enabled

apache-htcacheclean.service disabled

apache-htcacheclean@.service disabled

apache2.service enabled

apache2@.service disabled

apparmor.service enabled

apport-forward@.service static

apport.service generated

apt-daily-upgrade.service static

apt-daily.service static

aptik-battery-monitor.service generated

atop.service enabled

atopacct.service enabled

autovt@.service enabled

avahi-daemon.service enabled

bluetooth.service enabled

运行以下命令以查看指定服务的状态:

systemctl | grep apache2

apache2.service loaded active running The Apache HTTP Server

或者,使用以下命令也可查看指定服务的状态:

systemctl status apache2

● apache2.service – The Apache HTTP Server

Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)

Drop-In: /lib/systemd/system/apache2.service.d

└─apache2-systemd.conf

Active: active (running) since Tue 2018-03-06 12:34:09 IST; 8min ago

Process: 2786 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)

Main PID: 1171 (apache2)

Tasks: 55 (limit: 4915)

CGroup: /system.slice/apache2.service

├─1171 /usr/sbin/apache2 -k start

├─2790 /usr/sbin/apache2 -k start

└─2791 /usr/sbin/apache2 -k start

Mar 06 12:34:08 magi-VirtualBox systemd[1]: Starting The Apache HTTP Server…

Mar 06 12:34:09 magi-VirtualBox apachectl[1089]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 10.0.2.15. Set the ‘ServerName’ directive globally to suppre

Mar 06 12:34:09 magi-VirtualBox systemd[1]: Started The Apache HTTP Server.

Mar 06 12:39:10 magi-VirtualBox systemd[1]: Reloading The Apache HTTP Server.

Mar 06 12:39:10 magi-VirtualBox apachectl[2786]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using fe80::7929:4ed1:279f:4d65. Set the ‘ServerName’ directive gl

Mar 06 12:39:10 magi-VirtualBox systemd[1]: Reloaded The Apache HTTP Server.

执行以下命令,只查看正在运行的服务:

systemctl | grep running

acpid.path loaded active running ACPI Events Check

cups.path loaded active running CUPS Scheduler

init.scope loaded active running System and Service Manager

session-c2.scope loaded active running Session c2 of user magi

accounts-daemon.service loaded active running Accounts Service

acpid.service loaded active running ACPI event daemon

apache2.service loaded active running The Apache HTTP Server

aptik-battery-monitor.service loaded active running LSB: start/stop the aptik battery monitor daemon

atop.service loaded active running Atop advanced performance monitor

atopacct.service loaded active running Atop process accounting daemon

avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack

colord.service loaded active running Manage, Install and Generate Color Profiles

cron.service loaded active running Regular background program processing daemon

cups-browsed.service loaded active running Make remote CUPS printers available locally

cups.service loaded active running CUPS Scheduler

dbus.service loaded active running D-Bus System Message Bus

fwupd.service loaded active running Firmware update daemon

getty@tty1.service loaded active running Getty on tty1

irqbalance.service loaded active running LSB: daemon to balance interrupts for SMP systems

lightdm.service loaded active running Light Display Manager

ModemManager.service loaded active running Modem Manager

NetworkManager.service loaded active running Network Manager

polkit.service loaded active running Authorization Manager

使用以下命令查看系统启动时会被启用的服务列表:

systemctl list-unit-files | grep enabled

acpid.path enabled

cups.path enabled

accounts-daemon.service enabled

anacron-resume.service enabled

anacron.service enabled

apache2.service enabled

apparmor.service enabled

atop.service enabled

atopacct.service enabled

autovt@.service enabled

avahi-daemon.service enabled

bluetooth.service enabled

console-setup.service enabled

cron.service enabled

cups-browsed.service enabled

cups.service enabled

display-manager.service enabled

dns-clean.service enabled

friendly-recovery.service enabled

getty@.service enabled

gpu-manager.service enabled

keyboard-setup.service enabled

lightdm.service enabled

ModemManager.service enabled

network-manager.service enabled

networking.service enabled

NetworkManager-dispatcher.service enabled

NetworkManager-wait-online.service enabled

NetworkManager.service enabled

systemd-cgtop 按资源使用情况(任务、CPU、内存、输入和输出)列出控制组:

systemd-cgtop

Control Group Tasks %CPU Memory Input/s Output/s

/ – – 1.5G – –

/init.scope 1 – – – –

/system.slice 153 – – – –

/system.slice/ModemManager.service 3 – – – –

/system.slice/NetworkManager.service 4 – – – –

/system.slice/accounts-daemon.service 3 – – – –

/system.slice/acpid.service 1 – – – –

/system.slice/apache2.service 55 – – – –

/system.slice/aptik-battery-monitor.service 1 – – – –

/system.slice/atop.service 1 – – – –

/system.slice/atopacct.service 1 – – – –

/system.slice/avahi-daemon.service 2 – – – –

/system.slice/colord.service 3 – – – –

/system.slice/cron.service 1 – – – –

/system.slice/cups-browsed.service 3 – – – –

/system.slice/cups.service 2 – – – –

/system.slice/dbus.service 6 – – – –

/system.slice/fwupd.service 5 – – – –

/system.slice/irqbalance.service 1 – – – –

/system.slice/lightdm.service 7 – – – –

/system.slice/polkit.service 3 – – – –

/system.slice/repowerd.service 14 – – – –

/system.slice/rsyslog.service 4 – – – –

/system.slice/rtkit-daemon.service 3 – – – –

/system.slice/snapd.service 8 – – – –

/system.slice/system-getty.slice 1 – – – –

同时,我们可以使用 pstree 命令(输出来自 SysVinit 系统)查看正在运行的服务:

pstree

init-+-crond

|-httpd—2*[httpd]

|-kthreadd/99149—khelper/99149

|-2*[mingetty]

|-mysqld_safe—mysqld—9*[{mysqld}]

|-rsyslogd—3*[{rsyslogd}]

|-saslauthd—saslauthd

|-2*[sendmail]

|-sshd—sshd—bash—pstree

|-udevd

`-xinetd

我们还可以使用 pstree 命令(输出来自 systemd 系统)查看正在运行的服务:

pstree

systemd─┬─ModemManager─┬─{gdbus}

│ └─{gmain}

├─NetworkManager─┬─dhclient

│ ├─{gdbus}

│ └─{gmain}

├─accounts-daemon─┬─{gdbus}

│ └─{gmain}

├─acpid

├─agetty

├─anacron

├─apache2───2[apache2───26[{apache2}]]

├─aptd───{gmain}

├─aptik-battery-m

├─atop

├─atopacctd

├─avahi-daemon───avahi-daemon

├─colord─┬─{gdbus}

│ └─{gmain}

├─cron

├─cups-browsed─┬─{gdbus}

│ └─{gmain}

├─cupsd

├─dbus-daemon

├─fwupd─┬─{GUsbEventThread}

│ ├─{fwupd}

│ ├─{gdbus}

│ └─{gmain}

├─gnome-keyring-d─┬─{gdbus}

│ ├─{gmain}

│ └─{timer}

导向孔设计算与角度转换工具

摘要:就一些非开挖施工人员在现场凭经验打导向孔造成工程失败的现象,本文介绍简易实用的钻孔轨迹设计计算方法并举例说明,确保非开挖施工现场人员容易理解、掌握并方便使用,对于大直径PE管和钢管的铺设施工更值得参考。

关键词:钻孔轨迹、造斜、转弯半径、开孔角、倾角

从多年客户培训时反馈的信息得知,许多水平导向钻机使用者在实际施工时多凭借经验估计开孔角度和造斜距离以及钻孔角度变化。这在一些小直径软管的施工时都能侥幸成功,但在施工大直径管或钢管时这种凭经验的做法往往就会遇到许多麻烦,出现拖管时卡死、工程失败等重大工程事故,造成巨大经济损失。有的在事故之后找一个懂行的人帮助设计一个新轨迹,问题立即得到解决。其实这种基本的设计并不麻烦,只要稍微懂得一些简单数学知识并查阅一些相关数据即可进行,这里我将平时给客户理论培训课上讲授的一些简单设计计算的方法内容作一归纳与大家共享,期望能对一线施工人员有切实帮助。

导向孔是施工的第一步,随后的扩孔、拖管作业都是在此基础上进行的。导向孔的质量如造斜段转弯半径的大小、轨迹曲线的平滑程度、避让地下障碍物的位置等是否正确直接关系到后续拖管作业的成败,因此要认真做好导向孔的施工。

1 钻孔轨迹的结构 一般钻孔轨迹的结构如图1所示,包括三个部分:第一造斜段、水平段、第二造斜段

其中水平段是管线埋设的主要孔段,两个造斜段则分别为管线进入水平段和露出地面顺利与否的关键孔段,钻孔轨迹设计计算的主要内容也是指造斜段。

钻孔轨迹设计要参考多种影响因素

(1)所施工产品管线的材料性能、尺寸大小;

(2)所用钻杆最小弯曲半径(或单根钻杆倾角允许最大改变量);

(3)地面、地下障碍物的状况;

(4)地层特点等等。 由于篇幅所限,本文将主要介绍一般条件下钻孔轨迹简单设计计算的方法,对特殊地层、障碍物状况等的影响因素不作过多讨论。

2 钻孔轨迹的内容(以轨迹第一造斜段为例):

2.1 开孔点:即钻机需要摆放的位置(图1中的A点);

2.2 孔位深度:即管线要埋设的深度(图1中轨迹水平段距地面深度)。这往往由工程建设方根据产品管线的作用特点和所穿越环境的要求来决定,作为施工者就应当根据地层条件和地面、地下障碍物状况看是否能满足要求,必要时需要与工程建设方协调对深度进行改变。

2.3 造斜距离:即造斜段的水平投影长度(图1中AB段)。这其实与开孔点表示相同的含义,造斜距离确定后,钻机摆放位置也就找到了。

2.4 最短造斜距离:即满足产品管线最小允许转弯半径或钻杆最小允许弯曲半径要求的造斜距离。

如果单从施工的顺利程度来考虑,在产品管线埋深相同的前提下,造斜距离越长越好,因为造斜距离越长,轨迹曲线越平缓,越利于后续管线顺利回拖。但考虑到场地限制和施工工期、施工成本、施工风险的要求,造斜距离又不能太长,距离太长将需要更多的钻杆、更长的时间进行施工,这会提高施工成本且加重工程的风险性。因此在进行轨迹设计时,按最短造斜距离的要求考虑,实际施工时只要不小于该距离即可。该最短造斜距离其实是最节约钻杆和施工工期的安全距离。 这里提到的最小转弯半径是根据相应材料抗弯强度极限推算出来的几何概念,其意义为:如果管线或钻杆实际弯曲半径小于该最小转弯半径就会造成管线或钻杆的变形损坏。如果施工中所设计钻孔造斜段的某点或某段处的弯曲半径小于管线或钻杆的最小转弯半径限制就会造成钻杆、管线损坏或造成回拖时管线无法沿钻孔轨迹行进而被卡死的现象。 实际设计时,对于电缆线、硅芯管和PE管等柔性管线的施工由于其最小允许转弯半径都可以比钻杆的最小转弯半径小,因此多以钻杆的最小转弯半径为依据进行;对于钢管的施工由于其允许最小转弯半径大于钻杆的允许半径,因此不能仅以钻杆的允许转弯半径作为依据。 下表分别列出钢管的允许转弯半径钻机所用钻杆的最小转弯半径值供设计时参考。

表1 常用钢管最小弯曲半径参数

2.5 造斜段每根钻杆端点所在的深度、倾角:这是设计计算时最终为操作者需要使用的参数,实际施工时导向人员从导向仪上能读取这些参数,并以此作为导向操作的依据。

3简易设计计算步骤

3.1 计算最短造斜距离L(米) 设产品管线铺设深度(一般由工程发包方给出并考虑地面、地下障碍物及地层条件以后确定的)为H(米),产品管线(或所用钻杆)的最小转弯半径为R(米),则第一造斜段的最短造斜距离L为: L=[R2 -(R-H)2]1/2

公式说明:将造斜段拟合为几何圆弧,以轨迹水平段起点处的垂直线上距起点R处一点为圆心,R为半径,作圆弧与水平线(地面)相交,该交点与轨迹水平段起点在水平线上的投影点间距离即为最短造斜距离L (如图2所示)。

img

3.2造斜段所用钻杆的根数n(根) 设所用钻杆单根长度为S(米),则造斜段所需使用钻杆的大概根数为: n = L/S (根)

公式说明:将轨迹造斜段圆弧曲线近似看作其在水平面上的投影直线(即造斜距离),这样可简化计算公式。在实际工程中由于开孔角度一般不大于20度(36%倾角),且每根钻杆倾角变化不超过10%,因此每根钻杆所对应轨迹圆弧曲线段长度与其在水平面上的投影长度相差不会太大,因而这种近似也是合理的,造成的误差可通过对计算出的n值稍作放大来进行修正。

3.3 计算开孔角 先采用反推法粗略算出开孔角,再以此粗略值为准从第一根钻杆开始往后顺序推算出造斜段每一根钻杆的具体倾角和深度。 反推法粗略计算:以造斜段每一根钻杆为计算单元,从轨迹水平段起点开始,按与钻孔相反的方向逐根钻杆计算其深度改变量直至到达地面,最后一根钻杆相应的倾角值即位开孔角。 简化方法:将造斜段每一根钻杆的轨迹弧线简化为直线,以简化的直线(即每一根钻杆)为斜边作直角三角形(如图3所示)

img

对于图中的任意一个小直角三角形,其短直角边长度(实际为轨迹中单根钻杆的深度改变量近似值)为 ΔH=S ×sinɑ

由于单根钻杆倾角改变量很小,根据小角度三角函数的特性,有 sinɑ ≈ tgɑ

这样深度改变量公式可简化为: ΔH≈S ×tgɑ

式中 S为钻杆单根长度,对于特定钻机而言是常数;tgɑ即为钻杆倾角值,该值是控向仪上可以直观显示的(如某根钻杆处控向仪显示18%时,表明该钻杆所在小直角三角形的tgɑ=0.18)。 通过该简化公式将每根钻杆深度改变量的计算由三角计算简化为一般的乘法运算,免除了三角函数的复杂查阅,这给导向人员现场计算带来极大方便,甚至可以一边施工一边随时心算下一根钻杆所可能到达的深度。 反推法粗算开孔角时,每根钻杆倾角允许改变量取最大值,在随后的顺推过程中再根据需要进行调整。

4计算举例 某工程铺设PE管,铺设深度3米,使用沟神JT27M1施工,已知钻杆单根长度3米,最小转弯半径54米,设计该工程钻孔轨迹。

解:(1)所需最小造斜距离(即开孔点位置) 根据前述最小造斜距离计算公式,这里R=54米,H=3米,最短造斜距离为 L=[542-(54-3)2 ]1/2=17.75(米) 按前面讨论的轨迹弧线和投影直线间误差问题,这里将计算出的最短造斜距离修正为18米,即钻机需定位在距离水平段起点至少18米或以远。 (2)造斜段所需钻杆最少根数n 根据公式,已知L=18,钻杆单根长3米,故该造斜段所需钻杆至少为n = 18/3 = 6(根) 在(1)、(2)的计算中,也可以先不修正L,直接用计算出的L算出钻杆根数n的值, 再将算出的n值修正成整(根)数。 (3)开孔角计算 由前面列表可知JT27M1钻机的钻杆倾角最大允许改变量为5%,反推法粗算,倾角改变量取最大值,轨迹水平段起点(倾角为0)开始倒数第一根钻杆起点处倾角即为5%, 根据前述公式,该钻杆长度内轨迹深度改变量为 ΔH=S ×tgɑ=3×0.05=0.15(米) 该杆起点处深度值为 H-ΔH =3-0.15=2.85(米); 以此类推,每相邻两根钻杆倾角变化按最大值5%递增,则各杆起点处的倾角、深度改变量及相应深度值分别为:

钻杆序数 倾角 深度改变(米)深度值(米) 倒数第一杆 5% 0.15 2.85 倒数第二杆 10% 0.3 2.55 倒数第三杆 15% 0.45 2.1 倒数第四杆 20% 0.6 1.5 倒数第五杆 25% 0.75 0.75 倒数第六杆 25% 0.75 0

粗算结果表明,开孔角应为25%,但由于沟神控向仪显示时的特点为:在大于20%时,只可显示24%、28%等,增幅为4%;在10%至20%之间时可显示10%、12%、……等,增幅为2%;小于10%时增幅为1%。所以,在本设计中采用开孔角24%,并据此(只要每相邻两钻杆倾角最大改变量不超过5%即可)从第一根钻杆开始顺序推算出各杆参数: 钻杆序数 倾角 深度改变(米) 深度值(米) 第一杆 24% 0.72 0.72 第二杆 20% 0.60 1.32 第三杆 20% 0.60 1.92 第四杆 16% 0.48 2.40 第五杆 12% 0.36 2.76 第六杆 7% 0.21 2.97 第七杆 2% 0.06 3.03 第八杆 0(取中间值1%计算) 0.03 3.06

此即为实际施工时第一造斜段每根钻杆的操作参数。计算结果中,第六杆的深度为2.97米,比要求的3米差0.03米;第八杆完全进入水平状态,此时深度3.06米,比要求的深度大0.06米。这种误差在导向孔施工的允许范围内,并可在实际操作中根据现场控向仪上显示的每杆深度值大小进一步微调,以达到理想的精度。 当然也可以先给定一个开孔角,再顺推(以每根钻杆倾角改变量不超出给定最大值为准)算出每根钻杆的深度和倾角;或者使用轨迹设计软件(如沟神的TMS轨迹设计软件)帮助设计。 这里提供的是设计计算的方法,对于一个现场施工人员来说,自己所用钻杆的长度、最小转弯半径、单杆倾角最大允许改变量是个常数,很容易记住。唯一变化的是产品管线铺设深度值。这样每种铺设深度的情况只要设计一次,下次遇到同样深度要求且其它条件相同时即可采用相同方案。

5钢管铺设时钻杆倾角最大允许改变量的计算 在产品管线最小转弯半径大于钻杆的最小转弯半径时(例如钢管),每根钻杆倾角最大改变量的计算方法如下: 设该产品管线最小转弯半径为R’,钻杆单根长度为S,则单杆长度内钻孔允许改变的角度大小ɑ为: ɑ= (180/πR’)×S 相应倾角改变量δ为: δ= tgɑ×100%

例如:产品管线为钢管,直径250毫米,由前面的钢管弯曲半径参数表(表1)可 知,其最小弯曲半径为213.3米;设所用钻杆单根长度为3米,则单根钻杆长度范围内角度允许最大改变为 ɑ=(180/213.3π)×3=0.806° 相应倾角允许改变量为 δ= tg0.806×100%=1.4% 若前面轨迹设计的例子中所施工的是此钢管,则带入开孔角计算公式中的每杆倾角最大改变量值就得由上述的5%改为1.4%。 当然以上是基本计算,实际轨迹设计时还要根据现场场地状况和不同产品管线、不同工程要求的特点作相应调整,如在场地受限制而产品管线的极限弯曲半径比较大、要求造斜段很长时可通过开挖工作坑的形式,产品管线回拖到工作坑即可,这时轨迹造斜段转弯半径计算可分开成两段考虑:从工作坑至地面开孔点的轨迹段以钻杆的极限转弯半径作为设计依据;从工作坑至水平段的轨迹部分以产品管线的极限转弯半径为设计依据,这样,由于钻杆的极限转弯半径比产品管线的极限转弯半径小从而可减小该造斜段长度。但一般情况下,工作坑越深其开挖和支护的难度越高、费用越大,现场需根据产品管线埋置深度要求和不同场地工作坑开挖难度的不同灵活布置工作坑的位置,如在产品管线埋置深度3米以浅的施工,可将工作坑布置在造斜段与水平段的交点处,钻孔轨迹的整个造斜段都以钻杆的极限转弯半径为依据,占用最小造斜距离;埋管深度超过3米时,先依据产品管线的极限弯曲半径设计造斜曲线,工作坑布置在该曲线适合开挖的深度处,再将工作坑至地面开孔点段的造斜曲线按钻杆的极限转弯半径作依据进行修改,以便最大限度节省造斜距离。 虽然以上设计计算从理论上说不是很精确(实际轨迹是弧线,精确计算需要用到微积分),但这样计算出的结果完全满足实际施工时的要求,简单实用,现场施工人员可容易掌握。

非开挖导向设计基本原理及角度转换

导向孔轨迹示意图
如上图所示,一般由以下五段组成:入土直线段1-2弧线段2-3

水平段3-4

出土弧线段4-5

直线段5-6

各段长度由入土角,出土角,穿越深度,选择的曲率半径决定。

曲线设计有五个主要参数

曲率半径: Rmin

入土角度:α

出土角度:β

穿越长度:L

最大穿越深度:H

选择合适的曲率半径及造斜强度

最小曲率半径Rmin,是指能使管材弯曲后自然恢复原状的最大弯曲程度。也可理解为拉管时不因管材挠度产生拉管阻力所需的最小弯曲半径。

 

Rmin≥1000D~1500D

R=57.3/i

i=57.3/R

 

R:曲率半径;单位:m

i:  造斜强度;单位:°/m

D:钢管外径;单位:mm

举例

φ219mm钢管曲率半径

R=1000D

=0.219X1000

=219m

那么造斜强度

i =57.3/R

=57.3/219

=0.262(°/m )

 

不同直径钢管的曲率半径和导向强度.

R=1500D.

不同直径钢管的曲率半径和导向强度.

R=1000D.

不同规格钻杆曲率半径及造斜强度

确定曲率半径的原则

1 保证钻进曲线的曲率半径大于钻杆的最小曲率半径;

2 使曲线的曲率半径尽量大,每米钻杆角度变化尽量小,即造斜强度尽可能小。

最短穿越距离和入射角

由上图可知:当没有直线段和水平段时,穿越距离最短。这时的穿越距离和入射角依据穿越深度和管材(或者钻杆)的曲率半径而定。

由上图图示可知:

最短穿越距离为:L=2{(2R-H)H}1/2

tgα =H/0.5L

钻机入射角可近似为:2α。

入土角度的选择

由以上计算可知钻机入土角可近似为:2α;

在有选择余地时,应使如图角度尽量小。

出土角度的选择

出土角度β一般为 4 ° ~8 °,这根据管径的大小而定。

为方便顺利拉管,应使出土角度尽可能小。

例:铺设φ219mm的钢管,深度H为6m,

问:造斜段最短穿越距离为多少?

钻机的入射角为多少?

每米钻杆变化的百分比是多少?

管材最小曲率半径为:Rmin=1000D=219m

最短穿越距离为:L=2{(2R-H)H}1/2=102m

造斜段最短穿越距离为0.5L=0.5X102=51m

α =H/0.5L=6/51=0.118,

即为11.8%;

2α=2X11.8%=23.6%

即钻机的入射角为23.6%(即为13.3°)

保持钻机上的钻杆以入土角度钻进,即以13.3°钻进;现采用3m钻杆,则每米钻杆变化的百分比为:

23.6%÷(51-3)=0.492%

每根钻杆变化的百分比为:0.492%X3=1.475%

由上例可知:最小弯曲半径Rmin=219m;

造斜段距离为:0.5L=51m;

钻机的入射角为23.6%;

每根钻杆变化的百分比为:0.492%X3=1.475%

每根钻杆变化深度计算如下:

H1=3×23.6%=0.708m;

H2=H1+3×22.1%=1.37m;

H3= H2+3×20.6%=1.99m;

H4= H3+3×19.2%=2.56m;

H5= H4+3×17.7%=3.09m;

H6= H5+3×16.2%=3.58m;

H7= H6+3×14.75%=4.02m;

H8= H7+3×13.3%=4.42m;

H9= H8+3×11.8%=4.77m;

H10= H9+3×10.3%=5.08m;

H11=H10+3×8.85%=5.34m;

H12=H11+3×7.37%=5.56m;

H13=H12+3×5.9%=5.73m;

H14=H13+3×4.43%=5.86m;

H15=H14+3×2.95%=5.95m;

H16=H15+3×1.475%=5.99m;

H17=H16+3×1.475%=6m;

 

每根钻杆钻进深度变化量

若设当前钻杆的深度为Hi,则前一根钻杆深度为Hi-1;钻杆长度为L,θi第i根钻杆的倾斜角度(单位为度数:°);αi第i根钻杆的倾斜角度(单位为百分比:%),可得出入钻深度及出土深度的计算公式为:

入钻深度计算:Hi=Hi-1+L×sinθ (i=1,2,3,4…)

或:Hi=Hi-1+L× αi (i=1,2,3,4…)

出土深度计算: Hi=Hi-1-L×sinθ (i=1,2,3,4…)

或:Hi=Hi-1-L× αi (i=1,2,3,4…)

例:入土深度H0=1.0m,入土角30%,钻杆长度L=3m, 每根钻杆角度变化度数为5%,

入土深度计算:

H0=1.0m

H1=H0+3×30%=1.9m;

H2= H1+3×25%=2.65m;

H3= H2+3×20%=3.25m;

H4= H3+3×15%=3.7m;

H5= H4+3×10%=4.0m;

H6= H5+3×5%=4.15m;

H7= H6+3×(5-0)%=4.3m;

水平段深度为H7=4.3 m

出土深度计算:

H00= H7=4.3 m

H11= H00-3×5%=4.15m;

H22= H11-3×10%=3.85m;

H33= H22-3×15%=3.4m;

H44= H33-3×20%=2.8m;

H55= H44-3×25%=2.15m;

H66= H55-3×30%=1.25m;

各数据在图上标示如下

角度与百分比换算

3 进行导向计算时,可用角度,也可用百分比。下面两表为百分比与角度之间的换算

非开挖中角度转换度数,互换工具

linux自动备份文件 并上传到远程服务器 脚本实现

      mkdir -p /backup/bakdata  #新建数据备份目录
(2)完成备份脚本操作
新建脚本文件
vi bakdata.sh
添加以下内容:

#!/bin/sh
dateTime=`date +%Y_%m_%d`    #当前系统时间
days=7    #删除7天前的备份数据s
orowner=bakuser   # 备份到此用户下
bakdescdir=/DATA/bakmdata     #备份文件到该路径
bakdata=$orowner”_”$dateTime.tar.gz   #备份文件名
baklog=$orowner”_”$dateTime.log    #备份日志
baksrcdir=/DATA/www/moodledata   #需要备份的文件
remotePath=/DATA/moodle/bakmooldedata   #远程服务器的路径

cd $bakdescdir    #进入备份目录
mkdir -p $orowner   #按需要备份的用户创建目录
cd $orowner   #进入目录
echo “backup start at $dateTime” > $baklog
echo “————————–” >>$baklog
tar -zcvf $bakdata $baksrcdir $baklog    #压缩备份文件和日志文件

find $bakdescdir/$orowner -type f -name “*.log” -exec rm {} \;   #删除日志文件
find $bakdescdir/$orowner -type f -name “*.tar.gz” -mtime +$days -exec  rm -rf {} \;#删除7天前的备份(注意:{} \中间有空格)
scp  $bakdescdir/$orowner/$bakdata 10.6.108.79:$remotePath  #上传到远程服务器
(3)添加脚本执行权限
chmod +x /backup/oracledata/ordatabak.sh

  #添加脚本执行权限
(4)编辑系统任务执行计划
crontab -e
输入一下信息“:

00 01 * * * /DATA/bakdata/bakdata.sh#每天凌晨1点,以oracle用户执行ordatabak.sh备份文件:wq! #保存退出

重启crontab

service crond restart

从此每天的凌晨1点 系统会自动完成数据库的备份,压缩,并上传到远程服务器的指定路径下

Linux定时任务Crontab命令详解

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。

一、crond简介

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=HOME=/

# run-parts

51 * * * * root run-parts /etc/cron.hourly

24 7 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

前 四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行 命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

使用者权限文件:

文件:

/etc/cron.deny

说明:

该文件中所列用户不允许使用crontab命令

文件:

/etc/cron.allow

说明:

该文件中所列用户允许使用crontab命令

文件:

/var/spool/cron/

说明:

所有用户crontab文件存放的目录,以用户名命名

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

二、crond服务

安装crontab:

yum install crontabs

服务操作说明:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

/sbin/service crond status //启动服务

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

三、crontab命令详解

1.命令格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

2.命令功能:

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

3.命令参数:

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

4.常用方法:

1). 创建一个新的crontab文件

在 考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑 crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$ HOME目录下的. profile文件,在其 中加入这样一行:

EDITOR=vi; export EDITOR

然后保存并退出。不妨创建一个名为<user> cron的文件,其中<user>是用户名,例如, davecron。在该文件中加入如下的内容。

# (put your own initials here)echo the date to the console every

# 15minutes between 6pm and 6am

0,15,30,45 18-06 * * * /bin/echo ‘date’ > /dev/console

保存并退出。确信前面5个域用空格分隔。

在 上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些 系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为 cron命令的参数:

$ crontab davecron

现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。

同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

2). 列出crontab文件

为了列出crontab文件,可以用:

$ crontab -l

0,15,30,45,18-06 * * * /bin/echo `date` > dev/tty1

你将会看到和上面类似的内容。可以使用这种方法在$ H O M E目录中对crontab文件做一备份:

$ crontab -l > $HOME/mycron

这样,一旦不小心误删了crontab文件,可以用上一节所讲述的方法迅速恢复。

3). 编辑crontab文件

如果希望添加、删除或编辑crontab文件中的条目,而E D I TO R环境变量又设置为v i,那么就可以用v i来编辑crontab文件,相应的命令为:

$ crontab -e

可以像使用v i编辑其他任何文件那样修改crontab文件并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时, c r o n会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。

我们在编辑crontab文件时,没准会加入新的条目。例如,加入下面的一条:

# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month

30 3 1,7,14,21,26 * * /bin/find -name “core’ -exec rm {} \;

现在保存并退出。最好在crontab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。

现在让我们使用前面讲过的crontab -l命令列出它的全部信息:

$ crontab -l

# (crondave installed on Tue May 4 13:07:43 1999)

# DT:ech the date to the console every 30 minites

0,15,30,45 18-06 * * * /bin/echo `date` > /dev/tty1

# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month

30 3 1,7,14,21,26 * * /bin/find -name “core’ -exec rm {} \;

4). 删除crontab文件

要删除crontab文件,可以用:

$ crontab -r

5). 恢复丢失的crontab文件

如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:

$ crontab <filename>

其中,<filename>是你在$ H O M E目录中副本的文件名。

我建议你在自己的$ H O M E目录中保存一个该文件的副本。我就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。

有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。

5.使用实例

实例1:每1分钟执行一次command
命令:
* * * * * command

实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command

实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command

实例4:每隔两天的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 */2 * * command

实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb
命令:
30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb
命令:
45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
命令:
0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb
命令:
0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb
命令:
* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb
命令:
* 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb
命令:
0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb
命令:
0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本
命令:
01 * * * * root run-parts /etc/cron.hourly
说明:
run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了

四、使用注意事项

注意环境变量问题
有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

在 crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程 序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这 样,系统执行任务调度时就没有问题了。

不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

1)脚本中涉及文件路径时写全局路径;

2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

cat start_cbp.sh

#!/bin/sh

source /etc/profile

export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh -c mev &

3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:

0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

注意清理系统用户的邮件日志
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。

例如,可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

系统级任务调度与用户级任务调度
系 统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么 做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc /crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个 定时重启系统的任务也是无效的。

其他注意事项
新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。

当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

*实例笔记:个简单的自动备份脚本

以下是脚本test.sh的内容

#!/bin/bash

FILENAME=`date +%Y%m%d`

tar -zcvf /backup/$FILENAME /home/user

然后设置cronjob

命令 crontab -e 

添加一行以下数据 表示每天20点1分执行一次脚本。

1 20 * * * /bin/test.sh  

/*test最好是加上绝对路径,这样不容易出错*/

test.sh放在目录/bin 下面

*TAR 实现 Linux 操作系统自动备份

Tar 命令工具除了用于日常打包、解压源码包或者压缩包之外,最大的亮点是还可以用于 Linux 操作系统文件及目录的备份,使用 tar -g 可以基于 GNU 格式的增量备份,备份原理是基于检查目录或者文件的 atime、mtime、ctime 属性是否被修改。文件及目录时间属性详解如下:
❑ 文件被访问的时间(Access time,atime);
❑ 文件内容被改变的时间(Modified time,mtime);
❑ 文件写入、权限更改的时间(Change time,ctime)。
总结,更改文件内容 mtime 和 ctime 都会改变,但 ctime 可以在 mtime 未发生变化时被更改,例如修改文件权限,文件 mtime 时间不变,而 ctime 时间改变。
TAR 增量备份案例演示步骤如下:

  1. /root 目录创建 test 文件夹,同时在 test 文件夹中,新建test1.txt,test2.txt 文件,如图所示:
[root@hecs-x-medium-2-linux-20200611091300 ~]# cd /root
[root@hecs-x-medium-2-linux-20200611091300 ~]# ls
[root@hecs-x-medium-2-linux-20200611091300 ~]# mkdir test
[root@hecs-x-medium-2-linux-20200611091300 ~]# cd test/
[root@hecs-x-medium-2-linux-20200611091300 test]# touch test1.txt test2.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# ls
test1.txt  test2.txt

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 使用 tar 命令第一次完整备份 test 文件夹中的内容,-g 指定快照 snapshot文件,第一次没有该文件则会自动创建,如图所示
[root@hecs-x-medium-2-linux-20200611091300 test]# pwd
/root/test
[root@hecs-x-medium-2-linux-20200611091300 test]# tar -g /data/backup/snapshot -czvf /data/backup/2020test.tar.gz *
test1.txt
test2.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# cat /data/backup/snapshot
GNU tar-1.26-2
1592364124756978502[root@hecs-x-medium-2-linux-20200611091300 test]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 使用 tar 命令第一次完整备份 test文件夹中之后,会生成快照文件:/data/backup/snapshot,后期增量备份会以 snapshot 文件为参考,在 test文件夹中再创建 test3.txt test4.txt 文件,然后通过 tar 命令增量备份 test目录所有内容,如图所示:
[root@hecs-x-medium-2-linux-20200611091300 test]# ls
test1.txt  test2.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# pwd
/root/test
[root@hecs-x-medium-2-linux-20200611091300 test]# ls
test1.txt  test2.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# touch test3.txt test4.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# ls
test1.txt  test2.txt  test3.txt  test4.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# tar -g /data/backup/snapshot -czvf /data/backup/2020test_add1.tar.gz *
test3.txt
test4.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如上图 所示,增量备份时,需-g 指定第一次完整备份的快照 snapshot 文件,同时增量打包的文件名不能跟第一次备份后的文件名重复,通过 tar –tf 可以查看打包后的文件内容

[root@hecs-x-medium-2-linux-20200611091300 test]# tar -tf /data/backup/2020test_add1.tar.gz
test3.txt
test4.txt

  • 1
  • 2
  • 3
  • 4

在test4.txt文件中插入一部分内容,再新建test5.txt文件,修改test1.txt文件权限,再进行一次增量备份

[root@hecs-x-medium-2-linux-20200611091300 test]# ls
test1.txt  test2.txt  test3.txt  test4.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# vi test4.txt ##插入内容
[root@hecs-x-medium-2-linux-20200611091300 test]# touch test5.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# ls
test1.txt  test2.txt  test3.txt  test4.txt  test5.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# cat test3.txt 
[root@hecs-x-medium-2-linux-20200611091300 test]# chmod 777 test1.txt ##修改权限
[root@hecs-x-medium-2-linux-20200611091300 test]# tar -g /data/backup/snapshot -czvf /data/backup/2020test_add2.tar.gz *
test4.txt
test5.txt
test1.txt
[root@hecs-x-medium-2-linux-20200611091300 test]# tar -tf /data/backup/2020test_add2.tar.gz
test4.txt
test5.txt
test1.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

Shell+TAR 实现增量备份

企业中日常备份的数据包括/boot、/etc、/root、/data 目录等,备份的策略参考:每周 1-6 执行增量备份,每周日执行全备份。同时在企业中备份操作系统数据均使用Shell 脚本完成,此处auto_backup.sh 脚本供参考

#!/bin/sh
#define
SOURCE_DIR=(
    $*
)
TARGET_DIR=/data/backup/
YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
WEEK=`date +%u`
FILES=system_backup.tgz
CODE=$?
if
    [ -z "$*" ];then
    echo -e "Please Enter Your Backup Files or Directories\n--------------------------------------------\nExample $0 /boot /etc ......"
    exit
fi
#Determine Whether the Target Directory Exists
if
    [ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then
    mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY
    echo "This $TARGET_DIR is Created Successfully !"
fi
#EXEC Full_Backup Function Command
Full_Backup()
{
if
    [ "$WEEK" -eq "7" ];then
    rm -rf $TARGET_DIR/snapshot
    cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES `echo ${SOURCE_DIR[@]}`
    [ "$CODE" == "0" ]&&echo -e  "--------------------------------------------\nThese Full_Backup System Files Backup Successfully !"
fi
}
#Perform incremental BACKUP Function Command
Add_Backup()
{
   cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;
if
    [ -f $TARGET_DIR/$YEAR/$MONTH/$DAY/$FILES ];then
    read -p "These $FILES Already Exists, overwrite confirmation yes or no ? : " SURE
    if [ $SURE == "no" -o $SURE == "n" ];then
    sleep 1 ;exit 0
    fi
#Add_Backup Files System
    if
        [ $WEEK -ne "7" ];then
        cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $$_$FILES `echo ${SOURCE_DIR[@]}`
        [ "$CODE" == "0" ]&&echo -e  "-----------------------------------------\nThese Add_Backup System Files Backup Successfully !"
   fi
else
   if
      [ $WEEK -ne "7" ];then
      cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES `echo ${SOURCE_DIR[@]}`
      [ "$CODE" == "0" ]&&echo -e  "-------------------------------------------\nThese Add_Backup System Files Backup Successfully !"
   fi
fi
}
Full_Backup;Add_Backup
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

增加到定时任务中执行

crontab -e
0 1 * * * /bin/sh /data/sh/auto_backup.sh /boot /etc/ >> /tmp/back.log 2>&1