在 Oracle® Solaris 11.2 中管理系统服务

退出打印视图

更新时间: 2014 年 7 月
 
 

如何修改服务进程环境的环境变量

此过程说明如何为服务启动的进程将运行于的环境中的环境变量设置值。

此过程中示例显示如何修改 cron 环境变量以帮助进行调试。

  1. 验证该服务是否正在运行。

    下面的输出显示 cron 服务处于联机状态,并且 cron 进程正在运行。

    $ svcs -p cron
    STATE          STIME    FMRI
    online         10:24:05 svc:/system/cron:default
                   10:24:05     1089 cron
  2. 设置环境变量。

    setenv 子命令用于设置服务或服务实例启动的进程将运行于的环境的环境变量。

    使用下面的命令检查您要设置的环境变量的当前值:

    $ pargs -e `pgrep -f /usr/sbin/cron`

    此示例中设置的环境变量不具有任何当前值。

    以下命令为 svc:/system/cron:default 服务实例启动的 /usr/sbin/cron 进程设置 UMEM_DEBUGLD_PRELOAD 环境变量:

    $ svccfg -s system/cron:default setenv UMEM_DEBUG default
    $ svccfg -s system/cron:default setenv LD_PRELOAD libumem.so
  3. 刷新和重新启动该服务。

    更改环境变量值需要重新启动和刷新才能生效。

    $ svcadm refresh system/cron:default
    $ svcadm restart system/cron:default
  4. 检验是否已进行更改。

    下面的输出显示服务已重新启动,进程具有新的进程 ID,并且该进程环境的两个环境变量都得到了设置。

    $ svcs -p cron
    STATE          STIME    FMRI
    online          9:24:39 svc:/system/cron:default
                    9:24:39     5601 cron
    $ svcprop -g method -p environment system/cron:default
    start/environment astring LD_PRELOAD=libumem.so UMEM_DEBUG=default
    $ pargs -e `pgrep -f /usr/sbin/cron`
    5601: /usr/sbin/cron
    envp[0]: LOGNAME=root
    envp[1]: LD_PRELOAD=libumem.so
    envp[2]: PATH=/usr/sbin:/usr/bin
    envp[3]: SMF_FMRI=svc:/system/cron:default
    envp[4]: SMF_METHOD=start
    envp[5]: SMF_RESTARTER=svc:/system/svc/restarter:default
    envp[6]: SMF_ZONENAME=global
    envp[7]: UMEM_DEBUG=default

另请参见

unsetenv 子命令用于取消服务或服务实例启动的进程的环境变量设置。