Linux 服务管理两种方式service和systemctl

Linux 服务管理两种方式service和systemctl

Linux 服务管理两种方式service和systemctl

1.service命令
service命令其实是去/etc/init.d目录下,去执行相关程序

# service命令启动redis脚本
service redis start
# 直接启动redis脚本
/etc/init.d/redis start
# 开机自启动
update-rc.d redis defaults

其中脚本需要我们自己编写

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

1)systemctl命令兼容了service
即systemctl也会去/etc/init.d目录下,查看,执行相关程序

systemctl redis start
systemctl redis stop
# 开机自启动
systemctl enable redis

2)systemctl命令管理systemd的资源Unit
systemd的Unit放在目录/usr/lib/systemd/system(Centos)或/etc/systemd/system(Ubuntu)

主要有四种类型文件.mount,.service,.target,.wants

.mount文件

.mount文件定义了一个挂载点,[Mount]节点里配置了What,Where,Type三个数据项
等同于以下命令:

mount -t hugetlbfs /dev/hugepages hugetlbfs

.service文件

.service文件定义了一个服务,分为[Unit],[Service],[Install]三个小节
[Unit]
Description:描述,
After:在network.target,auditd.service启动后才启动
ConditionPathExists: 执行条件

[Service]
EnvironmentFile:变量所在文件
ExecStart: 执行启动脚本
Restart: fail时重启

[Install]
Alias:服务别名
WangtedBy: 多用户模式下需要的

.target文件

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

.wants文件

.wants文件定义了要执行的文件集合,每次执行,.wants文件夹里面的文件都会执行

分类: Linux

Linux管理工具systemctl与service

    今天笔者准备将docker设置为开机启动,以往
在debian内核上使用较多,想着按照以前的方法按照格式新建个service放置于/etc/init.d文件中,然后使用chkconfig或者update-rc.d来设置运行级别开机启动。但是笔者在
在centos下面/etc/init.d发现只有三个文件,这个引起了笔者的注意,因为ps -ef命令命令有很多服务启动了,/etc/init.d文件夹下面怎么可能才三个文件呢。
    最后这个问题就定位到systemctl这个管理工具上了。systemctl是RHEL的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。先说结论,sudo systemctl enable docker就可以实现开机启动。那么这两种有啥区别呢?1、原理service是一个脚本命令,是去/etc/init.d目录下执行相关程序来启动服务。

systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl,兼容service,也会去/etc/init.d目录下,查看执行相关程序。

Linux 的启动一直采用init进程。串行启动时间长,启动脚本复杂。Systemd取代了initd,成为系统的第一个进程(PID= 1),管理系统的服务、系统资源,不同的资源统称为 Unit。但是Systemd很复杂,笔者第一次从service转到systemctl感觉很混乱,需要慢慢捋清楚。

Systemd 架构图:

2、目录

service服务配置文件存放目录/etc/init.d/。

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。systemctl enable命令用于在上面两个目录之间,建立符号链接关系。

设置开机启动会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/docker.service 文件的链接。

docker.service 文件,比起service的脚本就简单多了。也可以通过systemctl cat docker.service来查看。

3、RunLevel 的概念

传统的init启动模式里面,有 RunLevel ,但是Systemd 是使用 Target 来管理。

默认的 RunLevel,在/etc/inittab文件设置,Target 是/etc/systemd/system/default.target,通常符号链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)。

Target 与 传统 RunLevel 的对应关系:

此时/etc/inittab文件已经不再使用了,查看里面其实都是注释与说明:

查看默认运行级别: systemctl get-default

修改用户级别为多用户命令行:sudo systemctlset-default multi-user.target。即为删除原有链接,新建multi-user.target新链接。可用通过命令systemctl list-dependencies multi-user.target查看 multi-user.target启动时的默认 Target。

systemctl太过于复杂,其他的待日后慢慢发掘学习把。

哪些手机型号外接便携显示器能实现PC电脑模式

手机支持PC模式,这个不同于一般的手机投屏功能,基本上实现了手机可以当电脑主机的功能。很多人都要疑问,自己的手机是否支持手机PC模式呢?奥斯曼小编为大家整理了一些支持PC模式手机型号,快来看看你的手机是否有第二系统模式!

哪些厂家手机支持外接便携显示器能实现PC电脑功能:

1、坚果手机TNT系统

将坚果手机通过Type-C一线连接奥斯曼便携显示器,即可在便携显示器上看到TNT系统界面,用户可以像使用Windows电脑一样,轻松使用办公软件制作PPT、表格、浏览网页、看视频、玩游戏等,支持同时打开多个窗口;手机可独立使用,也可变身成为触控键鼠。

支持PC模式的坚果手机型号:坚果R1、坚果Pro 2S

2、三星手机DEX系统

将三星手机通过Type-C一线连接奥斯曼便携显示器,三星DEX模式能满足基本浏览网页、文件、照片、简单办公、邮件处理等需求,常用的视频、微信、QQ、微博等都可以正常无压力的运行,三星DEX模式能够很好的提高手机的实用性,有着不错的办公效率与娱乐;手机可单独使用,也可以当触控板操作,方便演示文稿时进行切换幻灯片。

支持PC模式的坚果手机型号:S8、S8+、S9、S9+、S10、S10+、Note 8、Note 9、S10等…

3、华为手机EMUI系统

将将华为手机通过Type-C一线连接奥斯曼便携显示器,便携显示器即可显示电脑模式,手机可以充当鼠键,华为EMUI系统配备了日常实用的WPS、浏览器、文件管理器、备忘录、图片查看、查收邮件、华为视频以及其他第三方app等常用软件;手机可单独使用,也可以当触控板操作。

支持PC模式的华为手机型号:Mate10、Mate10 Pro、Mate 20、Mate 20 Pro、Mate RS、Mate 30、P20、P20 Pro、P20 RS、P30、P30 Pro、荣耀Note 10、荣耀V20等…

4、其他更多手机支持PC模式型号可查阅下图表格

未来的电脑,你们觉得会不会采用手机+便携显示器?期待更多手机厂家嵌入PC模式给消费者,手机扩展PC功能将会成为旗舰机的标配。

安卓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]