centos 7.x编写开机启动服务

centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。关于Systemd的详情介绍在这里。

Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum install命令安装的,yum命令会自动创建nginx.service文件,直接用命令

systemcel enable nginx.service

设置开机启动即可。
在这里我是用源码编译安装的,所以要手动创建nginx.service服务文件。
开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:

/lib/systemd/system/

1.在系统服务目录里创建nginx.service文件

vim /lib/systemd/system/nginx.service

内容如下

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

保存退出。

2.设置开机启动

systemctl enable nginx.service

3.其它命令
启动nginx服务

systemctl start nginx.service

设置开机自启动

systemctl enable nginx.service

停止开机自启动

systemctl disable nginx.service

查看服务当前状态

systemctl status nginx.service

重新启动服务

systemctl restart nginx.service

查看所有已启动的服务

systemctl list-units –type=service

4.Systemd 命令和 sysvinit 命令的对照表

Sysvinit 命令
Systemd 命令
备注

service foo start
systemctl start foo.service
用来启动一个服务 (并不会重启现有的)

service foo stop
systemctl stop foo.service
用来停止一个服务 (并不会重启现有的)。

service foo restart
systemctl restart foo.service
用来停止并启动一个服务。

service foo reload
systemctl reload foo.service
当支持时,重新装载配置文件而不中断等待操作。

service foo condrestart
systemctl condrestart foo.service
如果服务正在运行那么重启它。

service foo status
systemctl status foo.service
汇报服务是否正在运行。

ls /etc/rc.d/init.d/
systemctl list-unit-files –type=service
用来列出可以启动或停止的服务列表。

chkconfig foo on
systemctl enable foo.service
在下次启动时或满足其他触发条件时设置服务为启用

chkconfig foo off
systemctl disable foo.service
在下次启动时或满足其他触发条件时设置服务为禁用

chkconfig …

为iOS添加3D touch功能

一、为ios添加3D Touch 的实现
1.在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加以下代码 :

UIApplicationShortcutIcon *firstItemIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
    UIMutableApplicationShortcutItem *firstItem = [[UIMutableApplicationShortcutItem alloc]initWithType:@”First” localizedTitle:@”第一个按钮” localizedSubtitle:nil icon:firstItemIcon userInfo:nil];

    UIApplicationShortcutIcon *secondItemIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeShare];
    UIMutableApplicationShortcutItem *secondItem = [[UIMutableApplicationShortcutItem alloc]initWithType:@”Second” localizedTitle:@”第二个按钮” localizedSubtitle:nil icon:secondItemIcon userInfo:nil];

    application.shortcutItems = @[firstItem,secondItem];

2.实现这个方法-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler 在这个方法中处理添加和分享的事件,代码如下:

-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{

       if ([shortcutItem.type isEqual:@”First”]) {

        NSLog(@”第一个按钮事件”);

    }else if([shortcutItem.type isEqual:@”share”]){

        NSLog(@”第二个按钮事件 “);

    }
}

二、通过模拟器进行调试
使用SBShortcutMenuSimulator来配置模拟器,地址https://github.com/DeskConnect/SBShortcutMenuSimulator,使模拟器支持3D Touch,

在终端中按顺序输入以下命令:

git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git

cd SBShortcutMenuSimulator

make

然后打开刚才写好的程序 运行一下打开模拟器,再去终端中按顺序输入一下命令:

xcrun simctl …