root账户强行退出 会导致配置win10回滚删除新账户吗

3.9. 安装后的配置3.9. 安装后的配置成功安装 FreeBSD 后, 还需要依次进行一些配置。
在重启进入新系统前, 这些配置始终可以通过最终的配置菜单进行修改。3.9.1. 设置 root 密码必须设置 root 密码。 请注意输入密码时,
被输入的字符并不会在屏幕上显示, 因此为防止输入错误,
必须再次输入相同的字符。图 3.21. 设置 root 密码成功设置密码后, 安装将继续进行。3.9.2. 配置网络接口注意: 如果已经在 bootonly 安装时配置过网络接口,
则可略过此步。这里将显示一个网络接口列表,
其中的接口都是在当前计算机上侦测到的, 请选择一个进行配置。图 3.22. 选择一个网络接口3.9.2.1. 配置无线网络接口如果选择了无线网络接口,
则必须输入相关的无线网络验证及安全参数,
以允许其连接至特定的网络。无线网络是通过 Service Set Identifier(服务集标识符,
SSID)来表示的,
它是唯一表示无线网络的短字符串。大多数无线网络都会以加密方式传输数据,
藉此保护信息不被未经授权者查看。 强烈建议采用 WPA2 加密。
旧式的加密类型, 如
几乎没有任何安全性可言。若要连接至一个无线网络, 首先需要扫描无线接入点。图 3.23. 扫描无线接入点扫描完成后, 会列出所有发现的
以及它们支持的加密类型说明。
如果需要连接的 SSID 没有列出,
请选择 [ Rescan ] 再次扫描。
如果还没有出现, 请检查天线, 或将计算机移至更靠近接入点的地方。
在做过这些改善措施之后, 再重新扫描。图 3.24. 选择一个无线网络选择所要连接的无线网络, 即可输入连接所需的加密信息。
对于 WPA2, 只需输入一个密码 (也叫预共享密钥,(
简称 PSK)。 为安全起见,
在输入框中键入的字符将显示为星号。图 3.25. WPA2 设置在选择了无线网络并输入了连接所需的信息后,
网络配置将继续进行。3.9.2.2. 配置 IPv4 网络选择是否使用 IPv4 网络。 这是最常见的网络连接类型。图 3.26. 选择 IPv4 网络有两种配置 IPv4 的方式。
DHCP 会自动地为网络接口进行正确的配置,
通常情况下, 这是首选的方式。 而 Static
(静态) 方式则需要手工输入网络的配置信息。注意: 不要随意输入网络的配置信息, 因为这样的话网络就无法正常工作。
请向网络管理员或服务提供商那里取得
所列出的配置信息。3.9.2.2.1. 使用 DHCP 方式若存在可用的 DHCP 服务器, 请选择
[ Yes ] 以自动配置网络接口。图 3.27. 选择 DHCP 配置 IPv43.9.2.2.2. 使用静态配置方式网络接口的静态配置需要输入相关的 IPv4 配置信息。图 3.28. 静态配置 IPv4IP Address - IP 地址,
即给当前计算机手动分配的 IPv4 地址。 此地址必须是唯一的,
并且在本地网络上还没有被其他设备使用。Subnet Mask - 子网掩码, 用于本地网络。
通常是 255.255.255.0。Default Router(默认路由)
- 网络上默认路由的 IP 地址。 通常,
这是将本地网络连接至 Internet
的路由器或其他网络设备的地址。 也称作 default
gateway (默认网关)。3.9.2.3. 配置 IPv6 网络IPv6 是一种新的网络配置方式。 如果您有可用的
IPv6 连接, 并需要使用它, 选择
[ Yes ] 来开始配置。图 3.29. 选择 IPv6 网络IPv6 也有两种配置方式。
SLAAC , 或
StateLess Address AutoConfiguration
(无状态地址自动配置)
方式能够自动配置正确的网络接口, 而 Static(静态)
配置方式则需要手动输入网络信息。3.9.2.3.1. 使用 Stateless Address Autoconfiguration 方式SLAAC 允许 IPv6
组件从本地路由器请求自动配置信息, 详情参见 。图 3.30. 选择 SLAAC 配置 IPv63.9.2.3.2. 使用静态配置方式网络接口的静态配置需要输入相关的 IPv6 配置信息。图 3.31. 静态配置 IPv6IPv6 Address (IPv6地址) -
为当前计算机手工分配的 IP 地址。
这个地址必须是唯一的, 并且没有被其他本地网络设备使用。Default Router (默认路由) -
网络上默认路由的地址。 通常,
这是将本地网络连接至 Internet
的路由器或其他网络设备的地址。 也称作 default
gateway (默认网关)。3.9.2.4. 配置 DNSDomain Name System (域名系统,简称
解析器用于主机名和网络地址间的相互转换。 如果使用的是
DHCP 或 SLAAC,
那么其配置很可能已经存在; 否则, 请在 Search 字段中输入本地网络的域名,
在 DNS #1 和 DNS #2 中输入本地
DNS 服务器的 IP 地址。
至少需要配置一个 DNS 服务器。图 3.32. DNS 配置3.9.3. 设置时区为您的机器设置时区将允许其自动校时,
并正确执行一些与时区相关的操作。示例中的机器位于美国东部时区。 根据所处的地理位置,
您的选择可能会有所不同。图 3.33. 选择本地或 UTC 时钟选择 [ Yes ]
或 [ No ] 以确定机器时钟的配置方式,
然后按 Enter 键。 如果您并不知道系统使用的是
UTC 还是本地时间, 请选择 [ No ]
以使用更为常见的本地时间。图 3.34. 选择地区使用方向键选择合适的地区后按下 Enter 键。图 3.35. 选择国家用方向键选择合适的国家后按下 Enter 键。图 3.36. 选择时区用方向键选择合适的时区后按下 Enter 键。图 3.37. 确认时区选择确认时区的缩写是正确的, 然后按 Enter
键以继续安装后的配置。3.9.4. 选择需要开启的服务可以开启额外的系统服务, 它们会在系统启动时自动运行。
所有这些服务都是可选的。图 3.38. 选择需要开启的服务额外的系统服务sshd - Secure Shell(即
SSH) 守护进程,
提供安全的远程访问。moused - 支持在系统控制台中使用鼠标。ntpd - Network Time Protocol(网络时间协议,
简称 NTP) 守护进程,
提供时钟自动同步。powerd - 系统电量控制程序,
用于控制电量及节能。3.9.5. 启用崩溃转储bsdinstall
将询问是否在目标系统上启用崩溃转储。 由于在调试系统时非常有用,
因此鼓励用户尽可能地启用崩溃转储。
选择 [ Yes ] 以启用崩溃转储,
或选择 [ No ] 以不启用崩溃转储。图 3.39. 启用崩溃转储3.9.6. 添加用户在安装过程中, 应至少添加一位普通用户, 而不要始终以
root 身份登入。 当以
root 身份登入系统时,
系统几乎不会对其操作提供任何限制或保护。
以普通用户身份登录更为安全。选择 [ Yes ] 来添加新用户。图 3.40. 添加用户帐号为需要添加的用户输入信息。图 3.41. 输入用户信息用户信息Username - 用户名, 即登入时用户所输入的名称。
通常是名的首字母加姓的组合。Full name - 用户的全名。Uid - 用户 ID。 通常留空以自动分配。Login group - 用户组。
通常留空以接受默认取值。Invite user into
other groups? - 是否同时将用户加入其他权限组?
如果需要, 请输入权限组名称。Login class - 登录类别。
通常留空以接受默认取值。Shell - 用户 shell。
在本例中选择的是 。Home directory - 用户主目录。
通常留空以接受默认取值。Home directory permissions -
用户主目录的权限。 通常留空以接受默认取值。Use password-based authentication? -
是否使用基于密码的认证? 通常为 “yes”。Use an empty password? - 是否使用空密码?
通常为 “no”。Use a random password? - 是否使用随机密码?
通常为 “no”。Enter password - 用户的实际密码。
输入的字符不会在屏幕上显示。Enter password again -
必须再次输入密码以进行验证。Lock out the account after
creation? - 创建后锁定帐号? 通常为 “no”。全部信息输入完成后, 系统会显示摘要并询问是否正确。
如果发现了错误, 可以输入 no 后进行修改;
如果没有错误, 请输入 yes 以创建新用户。图 3.42. 退出用户与组管理若需添加更多用户, 请在问题“Add another user?”后输入
yes; 输入 no
以完成用户添加并继续安装。更多有关用户添加及管理的信息, 请参见 。3.9.7. 最终配置所有的安装及配置完成后, 仍有机会对其进行修改。图 3.43. 最终的配置菜单使用此菜单, 可以在完成安装前添加或修改任何配置。最终的配置选项Add User - 添加用户,
详见 。Root Password - root 密码,
详见 。Hostname - 主机名,
详见 。Network - 网络,
详见 。Services - 服务,
详见 .Time Zone - 时区,
详见 。Handbook - 手册,将下载并安装
FreeBSD 使用手册(即本书)。完成了最终配置后,
请选择 Exit 以继续安装。图 3.44. 手动配置bsdinstall
会询问重启前是否还需要额外的配置: 选择
[ Yes ] 进入 shell
做这些配置, 选择
[ No ] 以执行安装的最后一步。图 3.45. 完成安装如果需要进一步的配置或特殊的设置,
可以选择 [ Live CD ]
来进入安装介质的 Live CD 模式。安装完成后,选择
[ Reboot ] 重启计算机,
并开始使用全新的 FreeBSD 系统。 请不要忘记移除 FreeBSD 的安装
CD、 DVD 或 USB 记忆棒, 否则计算机可能会再次从这些介质启动。3.9.8. FreeBSD 的启动与关闭3.9.8.1. FreeBSD/i386 的启动FreeBSD 启动时会显示许多相关信息, 正常情况下屏幕会不断滚动,
而启动完成后则会显示一个登录提示符。 如果需要查看启动时的相关信息,
可以按下 Scroll-Lock 键开启
scroll-back buffer(回滚缓存),
然后使用 PageUp 键、 PageDown
键与方向键行翻阅; 再次按下 Scroll Lock
键将关闭回滚缓存并返回正常的屏幕。在 login: 提示符处输入安装时添加的用户名来登录系统,
本例中是 asample。 除非有必要,否则请勿作为
root 登录。上述的回滚缓存大小有限, 因而未必全部可见。 登入系统后,
在提示符处输入 dmesg | less,
能够查看到绝大部分的启动信息, 查看后按
q 键返回命令行。典型的启动信息(此处略去了版本信息):Copyright (c)
The FreeBSD Project.
Copyright (c) , , , ,
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU
@ 3.00GHz (3007.77-MHz K8-class CPU)
Origin = "GenuineIntel"
Id = 0x10676
Family = 6
Model = 17
Stepping = 6
Features=0x783fbff&FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2&
Features2=0x209&SSE3,MON,SSSE3&
AMD Features=0x&SYSCALL,NX,LM&
AMD Features2=0x1&LAHF&
real memory
avail memory =
Event timer "LAPIC" quality 400
ACPI APIC Table: &VBOX
ioapic0: Changing APIC ID to 1
ioapic0 &Version 1.1& irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: &VBOX VBOXXSDT& on motherboard
acpi0: Power Button (fixed)
acpi0: Sleep Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: &32-bit timer at 3.579545MHz& port 0xb on acpi0
cpu0: &ACPI CPU& on acpi0
pcib0: &ACPI Host-PCI bridge& port 0xcf8-0xcff on acpi0
pci0: &ACPI PCI bus& on pcib0
isab0: &PCI-ISA bridge& at device 1.0 on pci0
isa0: &ISA bus& on isab0
atapci0: &Intel PIIX4 UDMA33 controller& port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xd000-0xd00f at device 1.1 on pci0
ata0: &ATA channel 0& on atapci0
ata1: &ATA channel 1& on atapci0
vgapci0: &VGA-compatible display& mem 0xexe0ffffff irq 18 at device 2.0 on pci0
em0: &Intel(R) PRO/1000 Legacy Network Connection 1.0.3& port 0xd010-0xd017 mem 0xfxf001ffff irq 19 at device 3.0 on pci0
em0: Ethernet address: 08:00:27:9f:e0:92
pci0: &base peripheral& at device 4.0 (no driver attached)
pcm0: &Intel ICH (82801AA)& port 0xd100-0xd1ff,0xd200-0xd23f irq 21 at device 5.0 on pci0
pcm0: &SigmaTel STAC AC97 Codec&
ohci0: &OHCI (generic) USB controller& mem 0xfxf0804fff irq 22 at device 6.0 on pci0
usbus0: &OHCI (generic) USB controller& on ohci0
pci0: &bridge& at device 7.0 (no driver attached)
acpi_acad0: &AC Adapter& on acpi0
atkbdc0: &Keyboard controller (i8042)& port 0x60,0x64 irq 1 on acpi0
atkbd0: &AT Keyboard& irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: &PS/2 Mouse& irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
attimer0: &AT timer& port 0x40-0x43,0x50-0x53 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
sc0: &System console& at flags 0x100 on isa0
sc0: VGA &16 virtual consoles, flags=0x300&
vga0: &Generic ISA VGA& at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atrtc0: &AT realtime clock& at port 0x70 irq 8 on isa0
Event timer "RTC" frequency 32768 Hz quality 0
ppc0: cannot reserve I/O port range
Timecounters tick every 10.000 msec
pcm0: measured ac97 link rate at 485193 Hz
em0: link state changed to UP
usbus0: 12Mbps Full Speed USB v1.0
ugen0.1: &Apple& at usbus0
uhub0: &Apple OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1& on usbus0
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: &VBOX CD-ROM 1.0& Removable CD-ROM SCSI-0 device
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
ada0 at ata0 bus 0 scbus0 target 0 lun 0
ada0: &VBOX HARDDISK 1.0& ATA-6 device
ada0: 33.300MB/s transfers (UDMA2, PIO 65536bytes)
ada0: 12546MB ( byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad0
Timecounter "TSC" frequency
Hz quality 800
Root mount waiting for: usbus0
uhub0: 8 ports with 8 removable, self powered
Trying to mount root from ufs:/dev/ada0p2 [rw]...
Setting hostuuid: 1848d7bf-e6a4-4ed4-b782-bd3f.
Setting hostid: 0xa03479b2.
Entropy harvesting: interrupts ethernet point_to_point kickstart.
Starting file system checks:
/dev/ada0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/ada0p2: clean, 2620402 free (714 frags, 327461 blocks, 0.0% fragmentation)
Mounting local file systems:.
vboxguest0 port 0xd020-0xd03f mem 0xfxf07fffff,0xfxf0803fff irq 20 at device 4.0 on pci0
vboxguest: loaded successfully
Setting hostname: .
Starting Network: lo0 em0.
lo0: flags=8049&UP,LOOPBACK,RUNNING,MULTICAST& metric 0 mtu 16384
options=3&RXCSUM,TXCSUM&
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
nd6 options=21&PERFORMNUD,AUTO_LINKLOCAL&
em0: flags=8843&UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST& metric 0 mtu 1500
options=9b&RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM&
ether 08:00:27:9f:e0:92
nd6 options=29&PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&
media: Ethernet autoselect (1000baseT &full-duplex&)
status: active
Starting devd.
Starting Network: usbus0.
DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 192.168.1.142 -- renewal in 43200 seconds.
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
add net fe80::: gateway ::1
add net ff02::: gateway ::1
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib
32-bit compatibility ldconfig path: /usr/lib32
Creating and/or trimming log files.
Starting syslogd.
No core dumps found.
Clearing /tmp (X related).
Updating motd:.
Configuring syscons: blanktime.
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@
The key's randomart image is:
+--[RSA1 1024]----+
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@
The key's randomart image is:
+--[ DSA 1024]----+
+-----------------+
Starting sshd.
Starting cron.
Starting background file system checks in 60 seconds.
6 19:15:31 MDT 2011
FreeBSD/amd64 () (ttyv0)
login:在较慢的机器上, 生成 RSA 和 DSA 密钥可能需要一些时间。
这种情况只会在开启了 sshd
的新系统首次启动时发生, 之后的启动速度不受影响。FreeBSD 默认情况下并不会安装图形环境,
但提供了多种不同的选择。 请参阅
了解详情。3.9.9. 关闭 FreeBSD正常关闭 FreeBSD 有助于保护数据及系统硬件不受损坏。
不要直接关闭电源。 如果用户是 wheel
组的成员, 首先在命令行中输入 su
后键入 root 密码成为超级用户。
此外, 也可作为 root 登录, 然后使用命令
shutdown -p now。
这样系统将安全地自行关闭。虽然也可以使用组合键
Ctrl+Alt+Del
重启系统, 但正常情况下并不推荐这样做。本文档和其它文档可从这里下载:
.如果对于FreeBSD有问题,请先阅读
,如不能解决再联系
关于本文档的问题请发信联系服务器监控:Nagios和NRPE配置_服务器应用_Linux公社-Linux系统门户网站
你好,游客
服务器监控:Nagios和NRPE配置
来源:Linux社区&
作者:coolham
1&&&&&&&&Nagios介绍
Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
Nagios最初被设计为在Linux 系统之上运行,然而它同样可以在类Unix的系统之上运行。
Nagios更进一步的特征包括:
监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
监控主机资源(处理器负荷、磁盘利用率等);
简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
并行服务检查机制;
具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位;
自动的日志回滚;
可以支持并实现对主机的冗余监控;
可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
2&&&&&&&&Nagios安装
2.1&&&&&&&准备软件包
httpdgccglibc glibc-commongd gd-devel
mysqlmysql-server mysql-devel
2.2&&&&&&&&&&创建用户和组
最主要的工作是创建nagios用户及其束组,让nagios的运行用户为nagios而不是root。再把目录/usr/local/nagios的属主设置为nagios,以保证系统的安全。Nagios可以以root用户运行,但并不推荐这样做。用下面的步骤 来完成上述过程:
1、 添加系统帐户nagios:useradd nagios
# groupadd nagios
# groupadd nagcmd# useradd nagios -M -s /sbin/nologin -g nagios
注意:不要给nagios用户设置密码
2、更改目录属组:chown–R nagios.nagios /usr/local/nagios 。请注意,有的unix/linux的版本用户和属组分隔符号不是“.”,可能会是这样的形式 chown –R nagios:nagios /usr/local/nagios 。
2.3&&&&&&&&&&安装nagios
2.3.1&&&&&&下载Nagios和插件程序包
下载并安装:
2.3.2&&&&&&安装nagios
&#&tar&–zxvf nagios-3.2.1.tar.gz
#&cd&nagios-3.2.1
#./configure&&--prefix=/usr/local/nagios&&--with-command-group=nagcmd--enable-nanosleep --enable-broker
#&make&all
#&make&install
#&make&install-init
#&make&install-commandmode
#&make&install-config
2.3.3&&&&&&安装nagios插件
nagios-plugins-1.4.15
./configure &--prefix=/usr/local/nagios
make install
安装完成后,将在目录/usr/local/nagios生成目录libexec
3&&&&&&&&安装web服务器apache
Web服务不是nagios所必须的,但是如果nagios没有web,查看监控对象的对象将是非常费事和没有趣味的事情(只有通过查看nagios的日志来判断状态)。
3.1&&&&&&&&&&安装Apache HTTP
安装Apache 2.2.3
./configure --prefix=/usr/local/apache2 \
--enable-module=most \
--enable-shared=max
# make install
----------------------------------启动Apache服务----------------------------------
# /usr/local/apache2/bin/apachectl start
----------------------------------关闭Apache服务----------------------------------
# /usr/local/apache2/bin/apachectl stop
----------------------------------重启Apache服务----------------------------------
# /usr/local/apache2/bin/apachectl restart
3.2&&&&&&&&&&安装PHP
2. 安装PHP 5.3.6
# ./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs
# make install
# cp php.ini-production/usr/local/php/lib/php.ini
if has error:& make clean
3.3&&&&&&&&&&配置Apache服务的httpd.conf文件
*在LoadModule处添加 LoadModule php5_module module/libphp5.so
*在DirectoryIndex处添加 index.php
*在AddType application处添加
AddType application/x-httpd-php .php .phtml
AddType applicatoin/x-httpd-php-source.phps
然后,vi/usr/local/apache2/conf/httpd.conf,添加:
&&&&FilesMatch \.php$&
&&&&&&&SetHandler application/x-httpd-php
&&&&/FilesMatch&
&&&&FilesMatch "\.ph(p[2-6]?|tml)$"&
&&&&&&&SetHandler application/x-httpd-php
&&&&/FilesMatch&
&&&&FilesMatch "\.phps$"&
&&&&&&&SetHandler application/x-httpd-php-source
&&&&/FilesMatch&
&&&LoadModule php5_module modules/libphp5.so
&&&&IfModule dir_module&
& &&&&&DirectoryIndex index.html index.php
&&&&/IfModules&&
4&&&&&&&&Nagios配置
4.1&&&&&&&&&&配置前的处理
最主要的工作是创建nagios用户及其束组,让nagios的运行用户为nagios而不是root。再把目录/usr/local/nagios的属主设置为nagios,以保证系统的安全。Nagios可以以root用户运行,但并不推荐这样做。用下面的步骤 来完成上述过程:
2、 添加系统帐户nagios:useradd nagios
# groupadd nagios# useradd nagios -M -s /sbin/nologin -g nagios
注意:不要给nagios用户设置密码
2、更改目录属组:chown–R nagios.nagios /usr/local/nagios 。请注意,有的unix/linux的版本用户和属组分隔符号不是“.”,可能会是这样的形式 chown –R nagios:nagios /usr/local/nagios 。
添加Apache的daemon到nagios用户组
3、sendmail。看看sendmail是否正常运行?我们需要使用sendmail来发送故障报警信息,所以这个包必须能够正常工作。Sendmail分为服务器和客户端两部分,有2种发送报警邮件的方式:(1)nagios所在的机器通过sendmail客户端程序把邮件发送到专门的邮件服务器,再由邮件服务器把消息发送到用户邮箱。(2) 邮件客户端和服务器端就用nagios所在系统sendmail。第一种方式用起来非常规范,但更麻烦,例如需要做地址解析、修改邮件服务器的配置;另外 还有一个问题-它还依赖别的系统,增加了故障点和复杂度。第二种方法十分简单,只需启动sendmail服务即可,而且它不再依赖于别的系统和服务。在我工作的实际场景,这两种方法都使用,用专门的邮件服务器会有发送延迟的情况(因为邮件服务器要处理很多其他用户邮件的收发);而直接用sendmail做 服务器和客户端就异常简单和方便了。非常幸运的是,几乎所有的linux/unix发行版都默认安装sendmail,费了这么多笔墨,其实就做一个动作 -把sendmail服务运行起来。
4、手机短信发送工具。我现在的公司是sp,有自己的短信通道,直接把发送短信的客 户端程序sms_send拷贝到目录/usr/local/bin/下。如果没有短信下发的网关通道,那怎么办呢?网络上有很多短信发送的客户端程序,很 有名的就是smsclient,把它下载下来,解包后安装。不要忘记购买手机modem和手机卡,modem只支持SIM卡而不支持cdma。
安装完smsclient软件和硬件modem后,测试一下是否正常。如果没有modem又怎么办?办法还是有的:让你 的手机号可以接受邮件,这需要你去营业厅开通这项功能。短信报警功能是最有用的功能,我们不可能成天盯着监视屏幕,也不可能成天接受电子邮件,但我们的手机却可以24小时在线,只要被监控对象发生故障,马上就可以收到故障报警短信。
4.2&&&&&&&&&&Apache配置
我们分两个步骤来完成这个配置。第一步是修改apache的配置文件httpd.conf,这里的文件路径是/usr/local/apache/conf/httpd.conf 。把apache的运行用户[1]和运行组改成nagios,往下把下面的行追加到文件httpd.conf的末尾:
&#setting for nagiosScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin&&&& //Cgi文件所在目录&&& AuthType Basic&&& Options ExecCGI&&& AllowOverride None&&& Order allow,deny&&& Allow from all&&& AuthName "Nagios Access"&&& AuthUserFile /usr/local/nagios/etc/htpasswd& //验证文件路径&&& Require valid-user&Alias /nagios /usr/local/nagios/share&Directory "/usr/local/nagios/share"&& &&&&//nagios页面文件目录&&& AuthType Basic&&& Options Indexes&&& AllowOverride None&&& Order allow,deny&&& Allow from all&&& AuthName "nagios Access"&&& AuthUserFile /usr/local/nagios/etc/htpasswd& //验证文件路径&&& Require valid-user
&/Directory&
上述文本块的作用是对nagios的目录进行用户验证,只有合法的授权用户才可以访问nagios的页面文件。
第二步是生成用户验证文件:只要执行命令
/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd nagios
就会生成web的合法访问用户nagios;命令交互执行,需要输入2次密码,然后就在文件/usr/local/nagios/etc/htpasswd写入一行-第一个字段是刚生成的用户名,第二个是加密后的密码,如果还要添加更多的用户,执行命令 htpasswd 就不需要选项 “-c”,否则就会覆盖所有已经生成的行。
配置完成后,执行/usr/local/apache/bin/apachctl –t&检查apache配置文件是否有语法错误,无误后用/usr/local/apache/bin/apachctlstart & 把apache启动,然后从另外的机器的浏览器输入nagios 的访问地址
4.3&&&&&&&&&&Nagios配置
nagios,其配置文件的目录是/usr/local/nagios/etc
Nagios的主配置文件是nagios.cfg,我们就从这个文件开始修改
4.3.1&&&&&&修改主配置文件nagios.cfg
#cfg_file=/usr/local/nagios/etc/localhost.cfg[2],然后把下面几行的注释去掉:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg& //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg&&&&&& //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg&&&& //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg&&&&&&&&& //主机配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg&&&&&& //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg&&& //监视时段配置文件路径
改check_external_commands=0为check_external_commands=1 这行的作用是允许执行在web界面下重启nagios、停止主机/服务检查等操作。把command_check_interval的值从默认的1改成 command_check_interval=10s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。主配置文件要改的基本上就是这些,通过上面的修改,发现/usr/local/nagios/etc并没有文件hosts.cfg等一干文件,怎么办?稍后手动创建它们。第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。
先确保use_authentication=1。接下来修改default_user_name=sery ,再后面的修改在下表列出:
authorized_for_system_information=nagiosadmin,nagios
authorized_for_configuration_information=nagiosadmin,nagios
authorized_for_system_commands=nagios& //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,nagios
authorized_for_all_hosts=nagiosadmin,nagios
authorized_for_all_service_commands=nagiosadmin,nagios
authorized_for_all_host_commands=nagiosadmin,nagios
那么上述用户名打那里来的呢?是执行命令 /usr/local/apache/bin/htpasswd –c/usr/local/nagios/etc/htpasswd nagios所生成的.&
4.3.2&&&&&&修改cgi配置文件cgi.cfg
#如有多个用户,中间用逗号隔开
&& authorized_for_system_information=nagios
&&authorized_for_configuration_information=nagios
&& authorized_for_system_commands=nagios
&& authorized_for_all_services=nagios
&& authorized_for_all_hosts=nagiosadmin,nagios
&& authorized_for_all_service_commands=nagios
&& authorized_for_all_host_commands=nagios
在这里指定的用户”nagios”可以通过浏览器操纵nagios服务的关闭、重启等各种操作
4.3.3&&&&&&修改commands.cfg配置文件
第3个修改的配置文件是misccommands.cfg,这个文件的主要功能是用来发送报警短信和报警邮件,对其的修改如下所示:
#host-notify-by-sms&
define command {
&&&&&& command_name&&&&& host-notify-by-sms
&&&&&& command_line&&&&& /usr/local/bin/sms_send "Host $HOSTSTATE$
alert for $HOSTNAME$! on '$DATETIME$' " $CONTACTPAGER$
#service notify by sms&
define command {
&&&&&& command_name&&&& service-notify-by-sms
&&&&&& command_line&&&& /usr/local/bin/sms_send "'$HOSTADDRESS$'
$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$
主机和服务的邮件报警通知已经在文件中,不须更改。也可以把短信和邮件报警通知这些配置块写到文件commands.cfg中,效果是一样的。
4.3.4&&&&&&增加新的配置文件
先创建简单的配置文件timeperiods.cfg,其内容如下:
define timeperiod{&&&&&&& timeperiod_name 24x7&&&&&&& alias&&&&&&&&&& 24 Hours A Day, 7 Days A Week&&&&&&& sunday&&&&&&&&& 00:00-24:00&&&&&&& monday&&&&&&&&& 00:00-24:00&&&&&&& tuesday&&&&&&&& 00:00-24:00&&&&&&& wednesday&&&&&& 00:00-24:00&&&&&&& thursday&&&&&&& 00:00-24:00&&&&&&& friday&&&&&&&&& 00:00-24:00&&&&&&& saturday&&&&&&& 00:00-24:00&&&&&&& }
这个文件的定义明晰易懂,不多做说明。另建议7X24小时监控。第二个手动创建的配置文件是 contacts.cfg,其格式如下:&
define contact {&&&&&&& contact_name&&&&&&&& sa&&& //不要有空格&&&&&&& alias&&&&&&&&&&&&&&& system administrator&&&&&&& service_notification_period&&& 24x7&&&&&&& host_notification_period&&&&&& 24x7&&&&&&& service_notification_options&& w,u,c,r&&&&&&& host_notification_options&&&&&& d,u,r&&&&&&& service_notification_commands& service-notify-by-sms,service-notify-by-email& //这个命令读配置文件miscommands.cfg&&&&&&& host_notification_commands&&&& host-notify-by-email,host-notify-by-sms& &&&&//这个命令读配置文件miscommands.cfg&&&&&&& email&&&&&&&&&&&&&&&&&&&&&&&&& xxx&&&&&&& pager&&&&&&&&&&&&&&&&&&&&&&&&&
//手机号,收报警短信&&&&&&& }&&&& //不要把这个符号写掉了&define contact {&&&&&&& contact_name&&&&&&&& sery&&&&&&& alias&&&&&&&&&&&&&&& system administrator&&&&&&& service_notification_period&&& 24x7&&&&&&& host_notification_period&&&&&& 24x7&&&&&&& service_notification_options&& w,u,c,r&&&&&&& host_notification_options&&&&&& d,u,r&&&&&&& service_notification_commands& service-notify-by-sms,service-notify-by-email&&&&&&& host_notification_commands&&&& host-notify-by-email,host-notify-by-sms&&&&&&& email&&&&&&&&&&&&&&&&&&&&&&&& xxx&&&&&&& pager&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&& }
上面的文件定义了2个联系人,如果有更多联系人的话,照这个格式在后面追加即可。服务通知选项 (service_notification_options)与主机通知选项(host_notification_options)的几个选项在这里说明一下:w-warning ,u-unknown,c-critical,r-d-down,u-unreachable,注意一下,主机报警和服务报警有些差异。
紧接着的第三个手动创建的配置文件是contactgroups.cfg文件,这个文件是依照上一个文件contacts.cfg来的,contactgroups文件相对简单一些,其格式如下:
define contactgroup {&&&&&&& contactgroup_name&&& sagroup& //不要用空格&&&&&&& alias&&&&&&&&&&&&&&& system administrator group&&&&&&& members&&&&&&&&&&&&& sa,sery& //本例有2个成员}
多个成员之间用逗号做分界符,如果有更多的联系组,就依相同的格式在文件中追加余下的组。关键的角色终于登场,这就是配置文件hosts.cfg。下面是我定义的两个主机的基本样式:&
#define monitor& host&################################################################## Wangjing IDC servers&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ##################################################################define host {&&&&&& host_name&&&&&&&&&&&&&&&&& nagios-server&&&&&& alias&&&&&&&&&&&&&&&&&&&&& nagios server&&&&&& address&&&&&&&&&&&&&&&&&&& 61.x..x.49&&&&&& contact_groups&&&&&&&&&&&& sagroup //多个联系组用逗号分隔,数据来源于contactgroups.cfg&&&&&& check_command&&&&&&&&&&&&& check-host-alive&&&&&& max_check_attempts&&&&&&&& 5&&&&&& notification_interval&&&&& 10&&& //值可调,大小什么值合适需自己测定&&&&&& notification_period&&&&&&& 24x7&&&&&& notification_options&&&&& &&d,u,r&&&&&& }&define host {&&&&&& host_name&&&&&&&&&&&&&&&&& 24-25&&&&&& alias&&&&&&&&&&&&&&&&&&&&& server 24-25&&&&&& address&&&&&&&&&&&&&&&&&&& 202.X.24.25&&&&&& contact_groups&&&&&&&&&&&& sagroup&&&&&& check_command&&&&&&&&&&&& check-host-alive //down机就发报警通知&&&&&& max_check_attempts&&&&&&&& 5&&&&&& notification_interval&&&&& 10&&&&&& notification_period&&&&&&& 24x7&&&&&& notification_options&&&&&&& d,u,r&&&&&& }
更多的主机依此格式逐个追加进来。小技巧,如果是连续的ip段,最好自己写个脚本生成hosts.cfg文件
再一个重量级的配置文件是services.cfg,没有这个文件,什么监控也没用。下面给出一个样式文件:
#service definition&############################################################### servers service for host-live&&&&&&&&&&&&& && ###############################################################define service {&&&&&&& host_name&&&&&&& nagios-server& //来源:hosts.cfg&&&&&&& service_description&& check-host-alive&&&&&&& check_period&&&&&&&&& 24x7&&&&&&& max_check_attempts&&& 4&&&&&&& normal_check_interval 3&&& &&&&retry_check_interval& 2&&&&&&& contact_groups&&&&&&& sagroup& //来源:contactgroups.cfg&&&&&&& notification_interval&& 10&&&&&&& notification_period&&&& 24x7&&&&&&& notification_options&&& w,u,c,r&&&&&&& check_command&&&&&&&&&& check-host-alive& //检查主机是否存活&&&&&&& }define service {&&&&&&& host_name&&&&&&& 74-210&&&&&&& service_description&& check_tcp 80&&&&&&& check_period&&&&&&&&& 24x7&&&&&&& max_check_attempts&&& 4&&&&&&& normal_check_interval 3&&&&&&& retry_check_interval& 2&&&&&&& contact_groups&&&&&&& sagroup&&&&&&& notification_interval&& 10&&&&&&& notification_period&&&& 24x7&&&&&&& notification_options&&& w,u,c,r&&&&&&& check_command&&&&& check_tcp!80 //检查tcp 80端口服务是否正常&&&&&&& }
书写时要注意的是,check_tcp与要监控的服务端口之间要用”!”做分隔符。如果服务太多,以应该考虑用脚本来生成。主机组配置文件hostgroups.cfg,这是一个可选的项目,它建立在文件hosts之上,其格式如下:&
define hostgroup {&&&&&&&& hostgroup_name& sa-servers&&&&&&&& alias&&&&&&&&&& sa servers&&&&&&&& members&&&&&&&& nagios-server,24-25,24-26& //用逗号间隔多个主机&&&&&&&& }
多个主机组依上面的格式逐个追加上去。后面给一个主机组的截图。&
千辛万苦,终于把这些配置给做好保存,现在几乎有点迫不及待了,运行程序/usr/local/nagios –v /usr/local/nagios/etc/nagios.cfg来检查所有配置文件的正确性。如果十分幸运的话,运行完毕将在输出尾部出现:&
Total Warnings: 0Total Errors:&& 0&Things look okay - No serious problems were detected during the pre-flight check
这样的情况,大功告成
验证通过以后,就可以执行命令/usr/local/nagios–d& /usr/local/nagios/etc/nagios.cfg 把nagios作为守护进程。然后用ps –aux | grep nagios 看进程是否处于运行状态。到这一步,nagios服务基本上算是配置完毕。做hosts.cfg、services.cfg等配置时,可以运用一些小技巧 来减少出错的概率:如先定义少许的主机、服务,待校验无误后再追加。
用浏览器输入nagios所在服务器的ip及目录,如,再输验证所需的用户名和密码,就可点击页面右边的相关连接来查看各种状态。关掉某个被nagios监控主机的服务或者拔掉某个服务器的网线,等几分钟,点击超连接“ServiceDetail”观察页面状态看是否有红色的醒目的报警出现。
&一会儿,就会收到报警短信和报警邮件,然后在把测试所有的服务开启或把拔下来的网线查上去,片刻后,网页里的红色报警表格消失,手机短信或邮件通知故障恢复。如果你的情况也这样,那么真正大功告成。
Nagios 的功能十分强大,在我的项目里,因为我的需求不同而尽可能的简化了nagios而没有使用代理、多更多插件等功能,在一个不超过1000个服务器的网络规模里,它工作得很好。如果有更多的服务器,建议使用mysql数据来管理监控对象。
5&&&&&&&&Nagios Addons
5.1&&&&&&&&&&NRPE
NRPE is an addon that allows you to execute onremote Linux/Unix hosts. This is useful if you need to monitor localresources/attributes like disk usage, CPU load, memory usage, etc. on a remotehost. Similiar functionality can be accomplished by using the check_by_sshplugin, although it can impose a higher CPU load on the monitoring machine -especially if you are monitoring hundreds or thousands of hosts.
5.1.1&&&&&& 被监控主机安装
编译#./configure--enable-command-args#make all&&&&&&&&
安装NRPE插件、Deamon和Deamon配置文件示例#make install-plugin#make install-daemon#make install-daemon-config
安装NRPE Deamon为xinetd下的一个服务#make install-xinetd
编辑/etc/xinetd.d/nrpe,在only_from参数里加入nagios服务器的IP地址only_from = 127.0.0.1& &nagios server IP&
在/etc/services中添加NRPE Deamonnrpe&& 5666/tcp&& #NRPE
重启xinetd服务#service xinetd restart
检查NRPE Deamon是否运行#netstat -at | grep nrpetcp&&& 0&&&& 0&*:nrpe&&&& *:*&&&& LISTEN
检查NRPE Deamon是否工作正常#/usr/local/nagios/libexec/check_nrpe -H& localhostNRPE v2.12
5.1.2&&&&&&nagios服务器上安装设置
编译#./configure#make all&&&&&&&&
安装NRPE插件#make install-plugin
定制配置如果想使用nrpe监视远程主机上的新服务,需要做两件事:&&&& 1.在远程主机的nrpe.cfg文件里加上新命令。&&&& 2.对该主机的Nagios配置里添加新服务定义。
5.2&&&&&&&&&&NSCA
NSCA is an addon that allows you to send results from remote Linux/Unix hosts to the Nagios daemon running on themonitoring server. This is very useful inandmonitoring setups.
5.3&&&&&&&&&&NDOUtils
NDOUtils is an addon that allows you to store all statusinformation from Nagios in a MySQL database. Multiple instances of Nagios canall store their information in a central database for centralized reporting.This will likely serve as the basis for a new PHP-based web interface forNagios in the future.
The NDOUtils addon and documentation can be found at .
6&&&&&&&&在
所在服务器上安装 NRPE
安装过程参考 Nagios NRPE 文档。注意点:1.由于 nagios 脚本需要读取 oracle 相关文件。所以运行 nagios 的用户需要定义为 oracle 服务用户。并且修改 /etc/xinted.d/nrpe 中的配置。
service nrpe{flags = REUSEsocket_type = streamport = 5666wait = nouser = oracle& //(注意这里一定要用oracle用户)group = nagiosserver = /usr/local/nagios/bin/nrpeserver_args = -c /usr/local/nagios/etc/nrpe.cfg --inetdlog_on_failure += USERIDdisable = noonly_from = 192.168.100.62}
2.给 oracle 用户在 ORACLE_HOME 目录下执行权限。chmod –Rf 740 $ ORACLE_HOME/*
3.修改 check_oracle 脚本。将 $ORACLE_HOME 以及 $PATH 手动加入,避免出现问题。
ORACLE_HOME=/u01/oracle/product/10.2.0/db_1PATH=$PATH: /u01/oracle/product/10.2.0/db_1/bin
二、 配置 nrpe 服务
修改 /usr/local/nagios/etc/nrpe.cfg 文件。加入以下内容:
#Check Oraclecommand[check_oracle_tns]=/usr/local/nagios/libexec/check_oracle –tns orclcommand[check_oracle_db]=/usr/local/nagios/libexec/check_oracle –db orclcommand[check_oracle_login]=/usr/local/nagios/libexec/check_oracle –login orclcommand[check_oracle_cache]=/usr/local/nagios/libexec/check_oracle –cache orclsystem lkjsdf 80 90command[check_oracle_tablespace]=/usr/local/nagios/libexec/check_oracle–tablespace orcl system lkjsdf tab 90 80
具体参数写法请参考 check_oracle –help。
配置完成后,重启 xinetd 服务。
三、配置 Nagios 服务端
1.安装 nrpe 脚本支持。—参考官方文档。2.添加 nrpe 命令配置。修改 nagios/etc/objects/command.cfg 文件:
define command {command_name check_nrpecommand_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$}
3.在 nagios/etc/objects 添加oracle 主机配置文件。oracle.cfg 。
define host {use linux-serverhost_name oraclealias Oracle 10gaddress 192.168.100.63}
define service {use generic-servicehost_name oracleservice_de.ion TNS Checkcheck_command check_nrpe!check_oracle_tns}define service {use generic-servicehost_name oracleservice_de.ion DB Checkcheck_command check_nrpe!check_oracle_db}define service {use generic-servicehost_name oracleservice_de.ion Login Checkcheck_command check_nrpe!check_oracle_login}define service {use generic-servicehost_name oracleservice_de.ion Cache Checkcheck_command check_nrpe!check_oracle_cache}define service {use generic-servicehost_name oracleservice_de.ion Tablespace Checkcheck_command check_nrpe!check_oracle_tablespace}
7&&&&&&&&邮件和短信告警
7.1&&&&&&&&&&飞信
主软件:wget&
主程序:wget&
库文件:wget&
安装飞信:
tar zxvffetion-linux.tar.gz -C /usr/local
将下载的主程序fetion覆盖掉/usr/local/fx/下的fetion
在windows中解压linuxso_.rar并将里面的库文件上传至 /usr/local/fx/
cd /usr/local/fx
cp lib* /usr/lib
vim /etc/ld.so.conf
增加以下内容
/usr/local/fx/fetion
然后执行命令 &ldconfig
cp fetion /usr/bin
第三个是修改配置文件commands.cfg&这个文件是用来发送报警飞信的
#vim/usr/local/nagios/etc/objects/commands.cfg
增加以下内容:
define command {
command_name&&&notify-service-by-fetion
command_line&&&/usr/local/fx/fetion –mobile=1589******* –pwd=********** –to=1589********–msg-utf8=”$HOSTADDRESS$ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on$LONGDATETIME$” –hide
这里说明一下fetion的格式:
–mobile=飞信机器人号码
–pwd=密码
–to=目标手机号码&&&&& //该号码必须是飞信机器人的飞信好友
–msg-utf8=”信息内容”
–[hide|debug]隐藏/显示发送信息的过程
/usr/local/fx/fetion--mobile=xxxxx--pwd=xxx --to=1352294xx --msg-utf8="$HOSTADDRESS$$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"
7.1.1&&&&&&Note
第一次运行时需要输入验证码,验证码是个图片文件,以手机号码命名,在命令行输入这个验证码,下次就不需要了。
7.2&&&&&&&&&&发送邮件
# 'notify-host-by-email' command definitiondefine command{&&&&&&& command_name&&&notify-host-by-email&&&&&&& command_line&&&/usr/bin/printf "%b" "Host: $HOSTNAME$&br&Notification:$HOSTNOTIFICATIONNUMBER$&br&Command:$HOSTCHECKCOMMAND$&br&Datetime: $LONGDATETIME$&br&&br&Info:$HOSTOUTPUT$&br&$LONGHOSTOUTPUT$" | /usr/local/bin/sendEmail - -t $CONTACTEMAIL$ -s 28.4.15.18 -u "Host $HOSTSTATE$:$HOSTADDRESS$" -o message-content-type=html -o message-charset=utf8}# 'notify-service-by-email' command definitiondefine command{&&&&&&& command_name&&& notify-service-by-email&&&&&&& command_line&&&/usr/bin/printf "%b" "Host: $HOSTALIAS$&br&NotifyTimes:$SERVICENOTIFICATIONNUMBER$&br&Command:$SERVICECHECKCOMMAND$&br&Datetime: $LONGDATETIME$&br&&br&AdditionalInfo:&br&$SERVICEOUTPUT$&br&$LONGSERVICEOUTPUT$" |/usr/local/bin/sendEmail -f
-t $CONTACTEMAIL$ -s 28.4.15.18 -u"Service $SERVICESTATE$: $HOSTADDRESS$ | $SERVICEDESC$" -omessage-content-type=html -o message-charset=utf8}
相关资讯 & & &
& (03月01日)
& (02月02日)
& (07月09日)
& (02月15日)
& (01月26日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 git 回滚到某个版本 的文章

 

随机推荐