请教NFS 守护进程linux 开启nfs不了

1584人阅读
linux(2)
经常和同事在讨论问题的时候,把守护进行和守护线程搞混,不知道到底是在说一下哪个概念,现在把这两个概念总结一下:
对于JAVA而言,一般一个应用程序只有一个进程——JVM。除非在代码里面另外派生或者开启了新进程。
而线程,当然是由进程开启的。当开启该线程的进程离开时,线程也就不复存在了。
所以,对于JAVA而言,线程是完全可以由自己的API自由产生。例如new Thread().但是进程就不同,必须通过调用OS的API,如Runtime.getRuntime.exec()。 所以说,进程是OS级别的概念。
守护线程和用户线程的区别:
二者其实基本上是一样的。唯一的区别在于JVM何时离开。
用户线程:当存在任何一个用户线程未离开,JVM是不会离开的。
守护线程:如果只剩下守护线程未离开,JVM是可以离开的。
在Java中,制作守护线程非常简单,直接利用.setDaemon(true)
在linux或者unix中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于并且在运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。
  守护进程,也就是通常说的Daemon进程,是Linux中的服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。
  由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。
  这是编写守护进程的第一步。由于守护进程是脱离控制终端的,因此,完成第一步后就会在Shell终端里造成一程序已经运行完毕的假象。之后的所有工作都在子进程中完成,而用户在Shell里则可以执行其他命令,从而在形式上做到了与控制终端的脱离。
  在Linux中先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成的子进程。
  这个步骤是创建守护进程中最重要的一步,虽然它的实现非常简单,但它的意义却非常重大。在这里使用的是setsid,在具体介绍setsid之前,首先要了解两个概念:和会话期
  进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。
  :会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。
  接下来就可以具体介绍setsid的相关内容:
  (1)setsid函数作用:
  setsid函数用于创建一个新的会话,并担任该会话组的组长。调用setsid有下面的3个作用:
  让进程摆脱原会话的控制
  让进程摆脱原进程组的控制
  让进程摆脱原控制终端的控制
  那么,在创建守护进程时为什么要调用setsid函数呢?由于创建守护进程的第一步调用了fork函数来创建子进程,再将退出。由于在调用了fork函数时,子进程全盘拷贝了父进程的会话期、进程组、控制终端等,虽然父进程退出了,但会话期、进程组、控制终端等并没有改变,因此,这还不是真正意义上的独立开来,而setsid函数能够使进程完全独立出来,从而摆脱其他进程的控制。
  这一步也是必要的步骤。使用fork创建的子进程继承了的当前工作目录。由于在进程运行中,当前目录所在的文件系统(如“/mnt/usb”)是不能的,这对以后的使用会造成诸多的麻烦(比如系统由于某种原因要进入单用户模式)。因此,通常的做法是让&/&作为守护进程的当前工作目录,这样就可以避免上述的问题,当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp。改变工作目录的常见函数式chdir。
  文件权限掩码是指屏蔽掉文件权限中的对应位。比如,有个文件权限掩码是050,它就屏蔽了拥有者的可读与可执行权限。由于使用fork函数新建的子进程继承了的文件权限掩码,这就给该子进程使用文件带来了诸多的麻烦。因此,把文件权限掩码设置为0,可以大大增强该守护进程的灵活性。设置文件权限掩码的函数是umask。在这里,通常的使用方法为umask(0)。
  同文件权限码一样,用fork函数新建的子进程会从那里继承一些已经打开了的文件。这些被打开的文件可能永远不会被守护进程读写,但它们一样消耗,而且可能导致所在的文件系统无法卸下。
  在上面的第二步之后,守护进程已经与所属的控制终端失去了联系。因此从输入的字符不可能达到守护进程,守护进程中用常规方法(如printf)输出的字符也不可能在终端上显示出来。所以,为0、1和2 的3个文件(常说的输入、输出和报错)已经失去了存在的价值,也应被关闭。通常按如下方式关闭文件描述符:
  ===============================
  for(i=0;i&MAXFILE;i++)
  close(i);
  ===============================
  当用户需要外部停止守护进程运行时,往往会使用 kill命令停止该守护进程。所以,守护进程中需要
  编码来实现kill发出的signal信号处理,达到进程的正常退出。
  ===============================
  signal(SIGTERM, sigterm_handler);
  void sigterm_handler(int arg)
  _running = 0;
  ===============================
  这样,一个简单的守护进程就建立起来了。
  实现守护进程的完整实例(每隔10s在/tmp/dameon.log中写入一句话):
  =====================================================================
  #include&stdio.h&
  #include&stdlib.h&
  #include&string.h&
  #include&fcntl.h&
  #include&sys/types.h&
  #include&unistd.h&
  #include&sys/wait.h&
  #include &signal.h&
  #define MAXFILE 65535
  volatile
_running = 1;
  int main()
  int i,fd,
  char *buf=&this is a Dameon\n&;
  len = strlen(buf);
  pc = fork(); //第一步
  if(pc&0){
  printf(&error fork\n&);
  exit(1);
  else if(PC&0)
  exit(0);
  setsid(); //第二步
  chdir(&/&); //第三步
  umask(0); //第四步
  for(i=0;i&MAXFILE;i++) //第五步
  close(i);
  signal(SIGTERM, sigterm_handler);
  while( _running ){
  if((fd=open(&/tmp/dameon.log&,O_CREAT|O_WRONLY|O_APPEND,0600))&0){
  perror(&open&);
  exit(1);
  write(fd,buf,len);
  close(fd);
  usleep(10*1000); //10毫秒
  void sigterm_handler(int arg)
  _running = 0;
  amd:自动安装NFS()守侯进程
  apmd:高级电源治理
  Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库
  Autofs:自动安装治理进程automount,与NFS相关,依靠于NIS
  Bootparamd:引导参数服务器,为LAN上的提供引导所需的相关信息
  crond:linux下的计划任务
  Dhcpd:启动一个DHCP(动态IP地址分配)服务器
  Gated:路由守候进程,使用动态的OSPF
  Httpd:WEB服务器
  Inetd:支持多种的核心守候程序
  Innd:Usenet新闻服务器
  Linuxconf:答应使用本地WEB服务器作为来配置机器
  Mars-nwe:mars-nwe文件和用于Novell的打印服务器
  Mcserv:Midnight命令
  named:DNS服务器
  netfs:安装NFS、Samba和NetWare网络文件系统
  network:激活已配置网络接口的
  nfs:打开NFS服务
  nscd:nscd(Name Switch Cache daemon)服务器,用于NIS的一个支持服务,它高速缓存用户口令和组成成员关系
  portmap:RPC portmap治理器,与inetd类似,它治理基于RPC服务的连接
  postgresql:一种SQL
  routed:路由守候进程,使用动态RIP路由选择协议
  rstatd:一个为LAN上的其它机器收集和提供系统信息的守候程序
  ruserd:定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息
  rwalld:激活rpc.rwall服务进程,这是一项基于RPC的服务,答应用户给每个注册到LAN机器上的其他终端写消息
  d:激活rwhod服务进程,它支持LAN的rwho和ruptime服务
  sendmail:sendmail
  smb:Samba文件共享/打印服务
  snmpd:本地简单网络治理候进程
  squid:激活代理服务器squid
  syslog:一个让系统引导时起动syslog和klogd守候进程的脚本
  xfs:X Window字型服务器,为本地和远程X服务器提供字型集
  xntpd:网络时间服务器
  ypbind:为NIS(网络信息系统)客户机激活ypbind服务进程
  yppasswdd:NIS口令服务器
  ypserv:NIS主服务器
  gpm:管鼠标的
  identd:AUTH服务,在提供用户信息方面与finger类似
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:122513次
积分:1953
积分:1953
排名:第14382名
原创:58篇
转载:86篇
评论:14条
(1)(1)(1)(5)(1)(18)(31)(10)(2)(3)(1)(3)(38)(18)(3)(1)(8)Linux守护进程简介
本文介绍rhel 5.1系统默认安装后/etc/rc.d/init.d目录中各服务启动脚本,按单词首字顺序排列
acpid:ACPI高级配置和电源管理接口
anacron:Linux系统中的一种调度工具,与cron类似,如无需可关闭
apmd:apm高级电源管理,如开启acpid,就无需开启apmd,ACPI替代apmd,可关闭
atd:用于支持at命令的服务
auditd:Linux系统中用于记录用户底层调用情况,audit的服务进程
autofs:自动挂载管理进程,如无需可关闭
avahi-daemon、avahi-dnsconfd:avahi是zeroconf协议的实现,可以在没有DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务,除非有兼容的设备,否则建议关闭
bluetooth:用于蓝牙设备搜索信号,可关闭
capi:对使用ISDN设备的用户有用,可关闭
conman:控制台管理程序,支持大量的控制台设备,包括本地串口设备、telnet远程终端服务器、Unix sockets 以及外部进程等
cpuspeed:用于动态调节cpu使用率来节约能源,如果想让cpu以固定频率运行即可关闭之
crond:Linux下的任务计划,如果长时间开机则建议开启
cups,cups-config-daemon:打印机相关服务,无需可关闭
dhcdbd:让 DBUS 系统控制 DHCP 的接口
dund:支持通过蓝牙拨号连接网络
firstboot:装好系统首次引导进入图形界面进行初始化设置,依赖此服务,可关闭
functions:Linux系统公共shell函数库
gpm:终端鼠标指针支持
haldaemon:在图形界面下hal实现自动挂载移动设备,可关闭后手动挂载移动设备
halt:关机调用halt脚本
hidd:对键盘,鼠标等蓝牙输入设备提供支持,需配合bluetooth,可关闭
hplip:在Linux系统上实现HP打印机支持,如果没有兼容的打印机,可关闭
ip6tables:用于支持IPv6的软件防火墙,如果没有IPv6支持,可关闭
ipmi:可以实现远程配置、监测和恢复系统,需要服务器硬件支持,无需可关闭
iptables:用于支持IPv4的软件防火墙,无需可关闭
irda:提供红外线设备间的通讯支持,可关闭
irqbalance:在多处理器中,使用该服务可提高系统性能
isdn:综合业务数字网,一种接入互联网的方式,无需可关闭
kdump:内核崩溃转储机制,对于内核开发有一定的帮助
killall:通过程序的名字,直接杀死所有进程
krb524:kerberos验证切换服务,改变kerberos5到kerberos4的验证
kudzu:硬件自动监测程序,自动监测硬件是否发生变化,如添加新硬件,方便开机时自动设置好硬件信息
lisa:局域网信息服务,如在KDE中实现局域网主机扫描,必须开启lisa或者reslisa
lm_sensors:用于探测主板感应器的值,比如温度,频率,电压等,便于判定机器健康情况
lvm2-monitor:逻辑卷管理所需要使用
mcstrans:与SELinux有关,如果有使用SELinux则需要开启
mdmonitor:Linux下用于md设备,无需可关闭
mdmpd:用于监控多路径访问设备,这种存储设备能被多个控制器访问,可关闭
messagebus:系统进程间通讯服务
microcode_ctl:允许inter的cpu使用外挂的微指令集提供系统运作,可关闭
multipathd:使用多路径功能,主要配合存储环境使用
netconsole:可将内核的printk消息发送到远程的主机上保存
netfs:可以完成网络磁盘的挂载与卸载功能
netplugd:用于监控网络接口并在接口状态改变时执行指定命令
network:Linux网络服务,提供设置ip,网关,掩码,主机名等
NetworkManager,NetworkManagerDispatcher:自动切换网络连接的后台进程,实现在不同网络间的切换,无需可关闭
nfs:网络文件系统服务
nfslock:nfs锁定功能,防止不同用户同时修改nfs提供的同一文件
nscd:负责密码和组的查询,并且缓冲查询结果
ntpd:网络时间服务器的服务,提供客户端同步时间
pand:允许通过蓝牙连接以太网
pcscd:提供智能卡和智能卡读卡器的支持,无需可关闭
portmap:为NFS和NIS提供RPC功能
psacct:审计并跟踪Linux系统的异常活动
rdisc:路由发现守护进程
readahead_early,readahead_later:在开机的时候将某些程序预先载入内存,方便快速载入,加快启动速度
restorecond:用于给SELinux监控和重新加载正确的文件安全环境
rhnsd:redhat网络服务
rpcgssd,rpcidmapd,rpcsgssd:用于NFS v4
salauthd:sasl的认证守护进程
sendmail:sendmail邮件守护进程
setroubleshoot:selinux troubleshooting
single:单用户模式使用
smartd:监控磁盘状态
sshd:远程连接服务器所常用的安全连接方式
syslog:记录系统所产生的各项信息
vncserver:提供linux下远程桌面连接
winbind:samba名称服务器
wpa_supplicant:无线设备的支持
xfs:X window字体服务
ypbind:提供nis服务
yum-updatesd:rpm自动升级及软件包管理的服务
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'UNIX环境高级编程笔记(23)
守护进程(daemon) 是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。编程规则
1)创建子进程,父进程退出
这是编写守护进程的第一步。由于守护进程是脱离控制终端的,因此,完成第一步后就会在Shell终端里造成一程序已经运行完毕的假象。之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行其他命令,从而在形式上做到了与控制终端的脱离。
在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程。
2)在子进程中创建新会话
这个步骤是创建守护进程中最重要的一步,虽然它的实现非常简单,但它的意义却非常重大。在这里使用的是系统函数setsid,在具体介绍setsid之前,首先要了解两个概念:进程组和会话期
进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。
会话周期:会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。
接下来就可以具体介绍setsid的相关内容:
setsid函数作用:
setsid函数用于创建一个新的会话,并担任该会话组的组长。调用setsid有下面的3个作用:
让进程摆脱原会话的控制
让进程摆脱原进程组的控制
让进程摆脱原控制终端的控制
那么,在创建守护进程时为什么要调用setsid函数呢?由于创建守护进程的第一步调用了fork函数来创建子进程,再将父进程退出。由于在调用了fork函数时,子进程全盘拷贝了父进程的会话期、进程组、控制终端等,虽然父进程退出了,但会话期、进程组、控制终端等并没有改变,因此,这还不是真正意义上的独立开来,而setsid函数能够使进程完全独立出来,从而摆脱其他进程的控制。
3)改变当前目录为根目录
一步也是必要的步骤。使用fork创建的子进程继承了父进程的当前工作目录。由于在进程运行中,当前目录所在的文件系统(如“/mnt/usb”)是不能卸载的,这对以后的使用会造成诸多的麻烦(比如系统由于某种原因要进入单用户模式)。因此,通常的做法是让&/&作为守护进程的当前工作目录,这样就可以避免上述的问题,当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp。改变工作目录的常见函数式chdir。
4)重设文件权限掩码
文件权限掩码是指屏蔽掉文件权限中的对应位。比如,有个文件权限掩码是050,它就屏蔽了文件组拥有者的可读与可执行权限。由于使用fork函数新建的子进程继承了父进程的文件权限掩码,这就给该子进程使用文件带来了诸多的麻烦。因此,把文件权限掩码设置为0,可以大大增强该守护进程的灵活性。设置文件权限掩码的函数是umask。在这里,通常的使用方法为umask(0)。
5)重设文件权限掩码
文件权限掩码是指屏蔽掉文件权限中的对应位。比如,有个文件权限掩码是050,它就屏蔽了文件组拥有者的可读与可执行权限。由于使用fork函数新建的子进程继承了父进程的文件权限掩码,这就给该子进程使用文件带来了诸多的麻烦。因此,把文件权限掩码设置为0,可以大大增强该守护进程的灵活性。设置文件权限掩码的函数是umask。在这里,通常的使用方法为umask(0)。
6)关闭文件描述符
同文件权限码一样,用fork函数新建的子进程会从父进程那里继承一些已经打开了的文件。这些被打开的文件可能永远不会被守护进程读写,但它们一样消耗系统资源,而且可能导致所在的文件系统无法卸下。
在上面的第二步之后,守护进程已经与所属的控制终端失去了联系。因此从终端输入的字符不可能达到守护进程,守护进程中用常规方法(如printf)输出的字符也不可能在终端上显示出来。所以,文件描述符为0、1和2 的3个文件(常说的输入、输出和报错)已经失去了存在的价值,也应被关闭。通常按如下方式关闭文件描述符:
===============================
for(i=0;i&MAXFILE;i++)
===============================
7)守护进程退出处理
当用户需要外部停止守护进程运行时,往往会使用 kill命令停止该守护进程。所以,守护进程中需要
编码来实现kill发出的signal信号处理,达到进程的正常退出。
===============================
signal(SIGTERM, sigterm_handler);
void sigterm_handler(int arg)
_running = 0;
===============================
这样,一个简单的守护进程就建立起来了。
实现守护进程的完整实例(每隔10s在/tmp/dameon.log中写入一句话):
#include&stdio.h&
#include&stdlib.h&
#include&string.h&
#include&fcntl.h&
#include&sys/types.h&
#include&unistd.h&
#include&sys/wait.h&
#define MAXFILE 65535
void sigterm_handler(int arg);
volatile sig_atomic_t _running = 1;
int main()
int i,fd,len,flag = 1;
char *buf=&this is a Dameon\n&;
len = strlen(buf);
pc = fork(); //第一步
printf(&error fork\n&);
else if(pc&0)
pid = setsid(); //第二步
if (pid & 0)
perror(&setsid error&);
chdir(&/&); //第三步
umask(0); //第四步
for(i=0;i&MAXFILE;i++) //第五步
signal(SIGTERM, sigterm_handler);
while( _running )
if( flag ==1 &&(fd=open(&/tmp/daemon.log&,O_CREAT|O_WRONLY|O_APPEND,0600))&0)
perror(&open&);
write(fd,buf,len);
close(fd);
usleep(10*1000); //10毫秒
void sigterm_handler(int arg)
_running = 0;
}linux守护进程列表
amd:自动安装NFS(网络文件系统)守侯进程
apmd:高级电源治理
Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库
Autofs:自动安装治理进程automount,与NFS相关,依靠于NIS
Bootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息
crond:linux下的计划任务
Dhcpd:启动一个DHCP(动态IP地址分配)服务器
Gated:网关路由守候进程,使用动态的OSPF路由选择协议
Httpd:WEB服务器
Inetd:支持多种网络服务的核心守候程序
Innd:Usenet新闻服务器
Linuxconf:答应使用本地WEB服务器作为用户接口来配置机器
Lpd:打印服务器
Mars-nwe:mars-nwe文件和用于Novell的打印服务器
Mcserv:Midnight命令文件服务器
named:DNS服务器
netfs:安装NFS、Samba和NetWare网络文件系统
network:激活已配置网络接口的脚本程序
nfs:打开NFS服务
nscd:nscd(Name Switch Cache daemon)服务器,用于NIS的一个支持服务,它高速缓存用户口令和组成成员关系
portmap:RPC portmap治理器,与inetd类似,它治理基于RPC服务的连接
postgresql:一种SQL数据库服务器
routed:路由守候进程,使用动态RIP路由选择协议
rstatd:一个为LAN上的其它机器收集和提供系统信息的守候程序
ruserd:远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld:激活rpc.rwall服务进程,这是一项基于RPC的服务,答应用户给每个注册到LAN机器上的其他终端写消息
rwhod:激活rwhod服务进程,它支持LAN的rwho和ruptime服务
sendmail:邮件服务器sendmail
smb:Samba文件共享/打印服务
snmpd:本地简单网络治理候进程
squid:激活代理服务器squid
syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
xfs:X Window字型服务器,为本地和远程X服务器提供字型集
xntpd:网络时间服务器
ypbind:为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd:NIS口令服务器
ypserv:NIS主服务器
gpm:管鼠标的
identd:AUTH服务,在提供用户信息方面与finger类似
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1333356次
积分:14142
积分:14142
排名:第566名
原创:216篇
转载:128篇
评论:49条
(4)(6)(5)(62)(31)(22)(40)(91)(35)(19)(13)(14)(8)温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1634)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'关于NFS开启',
blogAbstract:'经过我的的实践,在Centos6下必须先启动rpcbind,而不是portmap: service&& rpcbind& start&&再安装启动NFS成功!&1、是否安装了NFS和portmap RPM包[root@ha01 /]# rpm -qa | grep nfsnfs-utils-1.0.9-44.el5nfs-utils-lib-1.0.8-7.6.el5[root@ha01 /]# rpm -qa | grep portmapportmap-4.0-65.2.2.12、若没有安装则需要安装如下的RPM包[root@ha01 /]# find /media/ -name nfs*/media/CentOS_5.5_Final/CentOS/nfs4-acl-tools-0.3.3-1.el5.i386.rpm',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 nfs守护进程 的文章

 

随机推荐