2017-06-15 11:21:00 weixin_30515513 阅读数 6
  • Android底层技术:Java层系统服务(Android Service)

    为什么我们需要学习撰写系统服务呢? 底层系统服务是Android 框架裡接近Linux/Driver 的部分。为了充分发挥硬件设备的差異化特性,系统服务是让上层Java 应用程序來使用Driver/HW Device 特色的重要管道。于此,先仔细解析Java层系统服务的架构,然后阐述这系统服务的代码开发要点,以及其API设计方法。

    32892 人正在学习 去看看 高煥堂

参考:

一、概述

1.1 service 和 daemon

达成某个 service 是需要一支 daemon 在运行的。

没有这支 daemon 就不会有 service.

daemon分为两种:

  • stand_alone
    独立启动,自行启动不透过其他机制,daemon 启动并加载到内存后就一直占用内存与系统资源。

最大的优点就是:因为是一直存在内存内持续的提供服务,因此对于发生客户端的要求时,stand alone 的 daemon 响应速度较快。

常见的 stand alone daemon 有 WWW 的 daemon (httpd)、FTP 的 daemon (vsftpd) 等等。

  • super daemon
    启动方式则是藉由一个统一的 daemon 来负责唤起服务!

它的好处是:自行启动服务不用的时候自行关闭服务,节约内存资源,telnet 就是这样的

1.2 service 命令

service命令,顾名思义,就是用于管理 Linux 操作系统中服务的命令。

注意:

  1. 声明:这个命令不是在所有的linux发行版本中都有。主要是在redhat、fedora、mandriva和centos中。
  2. 此命令位于/sbin目录下,用file命令查看此命令会发现它是一个脚本命令。
  3. 分析脚本可知此命令的作用是去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作。
  4. 开启httpd服务器:service httpd start
    start可以换成restart表示重新启动,stop表示关闭,reload表示重新载入配置。
  5. 关闭mysql服务器:service mysqld stop
  6. 强烈建议大家将service命令替换为/etc/init.d/mysqld stop (因为有一些linux的版本不支持service)

Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]

例如:

  • 示例一 网络重启
当修改了主机名、ip地址等信息时,经常需要把网络重启使之生效。
[root@node34 root]# service network 
用法:/etc/init.d/network {start|stop|restart|reload|status} 
[root@node34 root]# service network status 
配置设备: 
lo eth0 
当前的活跃设备: 
lo eth0 
[root@node34 root]# service network restart 
正在关闭接口 eth0:                                        [  确定  ] 
关闭环回接口:                                             [  确定  ] 
设置网络参数:                                             [  确定  ] 
弹出环回接口:                                             [  确定  ] 
弹出界面 eth0:                                            [  确定  ]
  • 示例二 重启 MySQL
[root@node34 root]# service mysql
mysql: unrecognized service
[root@node34 root]# service mysqld
用法:/etc/init.d/mysqld {start|stop|status|condrestart|restart}
[root@node34 root]# service mysqld status
mysqld (pid 1638) 正在运行...
[root@node34 root]# service mysqld restart
停止 MySQL:                                               [  确定  ]
启动 MySQL:                                               [  确定  ]

https://www.bbsmax.com/A/GBJrV18BJ0/

二、使用到的文件

/etc/init.d/* :启动脚本放置处.我们的 CentOS 实际上放置在 /etc/rc.d/init.d/ 啦! 不过还是有配置连结档到 /etc/init.d/ 的!

/etc/sysconfig/* :各服务的初始化环境配置文件

/etc/* :各服务各自的配置文件

/var/lib/* :各服务产生的数据库

`/var/run/*`` :各服务的程序之 PID 记录处

三、linux 中 service *** start 与直接运行 /usr/bin/*** 的区别

在linux想要运行启动一个服务有两种方法:

1,运行/etc/init.d/目录下的shell脚本,还可以有快捷方式,service *** start/ stop/restart /status,

2,直接运行/usr/bin目录下的服务文件;

第一种方法启动的程序可以通过service命令来管理,比如说查看状态 service --status-all

查看/etc/init.d目录,发现下面都是shell脚本,脚本里面运行的程序最终还是指向了/usr/bin下面的程序,只不过在shell脚本中可能直接对程序的一些运行参数继续进行了设置;

第二种方法,直接运行/usr/bin/****,如果运行时有配置文件的话,需要加上 --config *****,用这种方法启动程序后,不能用service命令查看状态。

此文在我的 Github Pages 上同步发布,地址为:Linux 中的 Service

转载于:https://www.cnblogs.com/neillee/p/7016543.html

2015-12-28 00:00:14 seagal890 阅读数 3581
  • Android底层技术:Java层系统服务(Android Service)

    为什么我们需要学习撰写系统服务呢? 底层系统服务是Android 框架裡接近Linux/Driver 的部分。为了充分发挥硬件设备的差異化特性,系统服务是让上层Java 应用程序來使用Driver/HW Device 特色的重要管道。于此,先仔细解析Java层系统服务的架构,然后阐述这系统服务的代码开发要点,以及其API设计方法。

    32892 人正在学习 去看看 高煥堂

service命令,顾名思义,就是用于管理Linux操作系统中服务的命令。

这个命令不是在所有的linux发行版本中都有。主要是在redhat、fedora、mandriva和centos中。

此命令位于/sbin目录下,用file命令查看此命令会发现它是一个脚本命令。

分析脚本可知此命令的作用是去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作。

开启httpd服务器:service httpd start
start可以换成restart表示重新启动,stop表示关闭,reload表示重新载入配置。

关闭mysql服务器:service mysqld stop

强烈建议大家将service命令替换为/etc/init.d/mysqld stop (因为有一些linux的版本不支持service)

Usage: service < option > | –status-all | [ service_name [ command | –full-restart ] ]

service oracle start
service oracle stop
service oracle restart
service oracle status

service --status-all #显示所有服务的状态

[root@beanpc /]# service --status-all
abrtd (pid  1645) is running...
abrt-dump-oops (pid 1653) is running...
acpid (pid  1419) is running...
atd (pid  1692) is running...
auditd (pid  2511) is running...
automount (pid  1499) is running...
avahi-daemon (pid  1326) is running...
Usage: /etc/init.d/bluetooth {start|stop}
certmonger (pid  1836) is running...
Running
cgred is stopped
conmand is stopped
cpuspeed is stopped
crond (pid  5541) is running...
cupsd (pid  1394) is running...
dnsmasq (pid 1821) is running...
Generated by ebtables-save v1.0 on Sun Dec 27 07:34:24 CST 2015
*nat
:PREROUTING ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT

/usr/sbin/fcoemon -- UNUSED
No interfaces created.
firstboot is not scheduled to run
gpm is stopped
hald (pid  1428) is running...
JAVA_EXECUTABLE or HSQLDB_JAR_PATH in '/etc/sysconfig/hsqldb' is set to a non-file.
httpd is stopped
ip6tables: Firewall is not running.
iptables: Firewall is not running.
irqbalance is stopped
iscsi is stopped
iscsid is stopped
Kdump is not operational
ksm is not running
ksmtuned (pid  1669) is running...
ktune settings are not applied.
libvirtd (pid  1716) is running...
started
libvirt-qmf is stopped
lldpad is stopped
lvmetad is stopped
mailman is stopped
qpidd is stopped
matahari-qmf-hostd is stopped
matahari-qmf-networkd is stopped
matahari-qmf-rpcd is stopped
matahari-qmf-serviced is stopped
matahari-qmf-sysconfigd is stopped
matahari-qmf-sysconfig-consoled is stopped
Checking for mcelog
mcelog is stopped
mcstransd is stopped
mdmonitor is stopped
memcached is stopped
messagebus (pid  1301) is running...
mip6d is stopped
multipathd is stopped
mysqld is stopped
No open transaction
netconsole module not loaded
Configured devices:
lo eth0 eth1
Currently active devices:
lo eth0 eth1 virbr0
NetworkManager (pid  1312) is running...
rpc.svcgssd is stopped
rpc.mountd is stopped
nfsd is stopped
rpc.rquotad is stopped
rpc.statd (pid  1345) is running...
ntpd is stopped
numad is stopped
oddjobd is stopped
portreserve is stopped
master (pid  1621) is running...
Process accounting is disabled.
qpidd is stopped
quota_nld is stopped
radvd is stopped
rdisc is stopped
restorecond (pid  2750) is running...
rhsmcertd (pid 1807) is running...
rngd is stopped
rpcbind (pid  1274) is running...
rpc.gssd is stopped
rpc.idmapd (pid 1384) is running...
rpc.svcgssd is stopped
rsyslogd (pid  1226) is running...
sandbox is stopped
saslauthd is stopped
sfcb is not running
smartd is stopped
snmpd is stopped
snmptrapd is stopped
spice-vdagentd is stopped
openssh-daemon (pid  1539) is running...
sssd is stopped
No managed stap-server is running
Usage: /etc/init.d/stinit {start}
svnserve is stopped
No systemtap scripts are present
tuned is stopped
virt-who dead but subsys locked
Xvnc is stopped
vsftpd (pid 7820) is running...
wdaemon is stopped
wpa_supplicant (pid  1341) is running...
xinetd is stopped
ypbind is stopped
[root@beanpc /]# 
2020-03-26 18:45:52 qq_20388417 阅读数 31
  • Android底层技术:Java层系统服务(Android Service)

    为什么我们需要学习撰写系统服务呢? 底层系统服务是Android 框架裡接近Linux/Driver 的部分。为了充分发挥硬件设备的差異化特性,系统服务是让上层Java 应用程序來使用Driver/HW Device 特色的重要管道。于此,先仔细解析Java层系统服务的架构,然后阐述这系统服务的代码开发要点,以及其API设计方法。

    32892 人正在学习 去看看 高煥堂

作用: 都是用来管理Linux服务的

不同点:systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl

service的用法:

以启动Redis为例:service redis start

systemctl的用法:(本文着重讲解)

systemctl命令兼容了service;

systemctl redis start

目录

 

1. 原理

 2. 常用命令


1. 原理

systemctl命令的实质是管理和操作systemd下的Unit;

systemd的Unit目录:
Centos:/usr/lib/systemd/system
Ubuntu:/etc/systemd/system

主要包含了4种类型的文件:.service .target .wants .mount

4种类型的文件的作用:

.mount:为程序定义一个挂载点(放到哪个目录运行);

我们来具体查看一个:

.target:定义了一些基础的组件供.service文件调用;

.wants:定义了一些要执行文件的合集的目录,每次执行该合集时,目录里所有的文件都会被执行;

.service:定义了一个服务(分为三部分);

 2. 常用命令

查看版本号:

systemctl --version

管理服务(Unit):

systemctl <要执行的操作> <服务>
如:
systemctl start redis

要执行的操作主要有以下类型:

start:    立刻启动后面接的 unit。
stop:     立刻关闭后面接的 unit。
restart:  立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
reload:   不关闭 unit 的情况下,重新载入配置文件,让设置生效。
enable:   设置下次开机时,后面接的 unit 会被启动。
disable:  设置下次开机时,后面接的 unit 不会被启动。
status:   目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
is-active:目前有没有正在运行中。
is-enable:开机时有没有默认要启用这个 unit。
kill :    不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
show:     列出 unit 的配置。
mask:     注销 unit,注销后你就无法启动这个 unit 了。
unmask:   取消对 unit 的注销。

举几个例子:

查看某个服务的状态:

Loaded:    表示了从哪里启动,enable表示开机启动,disable反之;
Active:     active(running)表示已在运行,inactive(dead)反之;
Mian PID:   进程号;
Memory:     占用的内存;

查看某个服务的配置:

注销与反注销:

systemctl mask gdm.service        //注销这个服务,如果要启动的话,先要反注销
systemctl unmask gdm.service      //反注销

查看已经启动的Unit:

systemctl list-units (或者sudo systemctl)

UNIT:  项目的名称,包括各个 unit 的类别(看扩展名)。
LOAD:  开机时 unit 的配置是否被加载。
ACTIVE:目前的状态,须与后续的 SUB 搭配!就是我们用 systemctl status 观察时,active的内容。
DESCRIPTION:描述信息。
注意,systemctl 不加参数,其实等同于 systemctl list-units

查看系统上一共装了多少个Unit:

​​​​​​​systemctl list-unit-files

筛选只查看service类型的Unit:

systemctl list-units --type=service -all        type可以设置筛选条件

查看加载失败的Unit

systemctl --failed

 

 

本文参考资料:https://blog.csdn.net/skh2015java/article/details/94012643

2013-02-06 10:58:52 jeffreyst 阅读数 738
  • Android底层技术:Java层系统服务(Android Service)

    为什么我们需要学习撰写系统服务呢? 底层系统服务是Android 框架裡接近Linux/Driver 的部分。为了充分发挥硬件设备的差異化特性,系统服务是让上层Java 应用程序來使用Driver/HW Device 特色的重要管道。于此,先仔细解析Java层系统服务的架构,然后阐述这系统服务的代码开发要点,以及其API设计方法。

    32892 人正在学习 去看看 高煥堂
ervice命令,顾名思义,就是用于管理Linux操作系统中服务的命令。

1. 声明:这个命令不是在所有的linux发行版本中都有。主要是在redhat、fedora、mandriva和centos,Ubuntu中。

2. 此命令位于/sbin目录下,用file命令查看此命令会发现它是一个脚本命令。

3. 分析脚本可知此命令的作用是去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作。

4. 开启httpd服务器:service httpd start

start可以换成restart表示重新启动,stop表示关闭,reload表示重新载入配置。

5. 关闭mysql服务器:service mysqld stop

6. 强烈建议大家将service命令替换为/etc/init.d/mysqld stop (因为有一些linux的版本不支持service)

 

2017-06-20 17:24:10 renlonggg 阅读数 632
  • Android底层技术:Java层系统服务(Android Service)

    为什么我们需要学习撰写系统服务呢? 底层系统服务是Android 框架裡接近Linux/Driver 的部分。为了充分发挥硬件设备的差異化特性,系统服务是让上层Java 应用程序來使用Driver/HW Device 特色的重要管道。于此,先仔细解析Java层系统服务的架构,然后阐述这系统服务的代码开发要点,以及其API设计方法。

    32892 人正在学习 去看看 高煥堂

service命令格式:

service < option > |--status-all | [ service_name [ command | --full-restart ]]

1,查看linux 所有service

service --status-all

2,service  service_name start //开启service

3,service service_name stop//关闭service

4,service service_name restart//重启service

5,service --full-restart//所有的服务重启

注:

1,service命令可以替换为/etc/init.d/  service_name command

2,一些linux的版本不支持service

Linux的service用法

阅读数 12

Linux service命令

阅读数 666

Linux| Linux服务介绍(Service)

博文 来自: u011479200
没有更多推荐了,返回首页