ubuntu电源按键操作_瑞芯微 ubuntu power按键-程序员宅基地

技术标签: 笔记  



# 前言 我们常说工程的事情就是要有实事求是和日拱一卒精益求精的精神;大部分东西都很容易也没那么容易...
# 问题,工控机主板工作模式更改

我们很多产品工控机安装开源(定制)的linux系统,系统主板设置有AT和ATX两种工作模式,为了系统安全稳定,一般我们需要把主板工作模式变更为ATX模式,电源键更新为带Reset(回弹)功能的开关; 这样系统可以捕获电源按键关机信号,主动优雅关机(可以主动保存设备现场…关闭IO操作等,从而更好保护硬盘和系统.本文记录一次Ubuntu(16.04)系统下主板工作方式变更带来的小更改.

二、修改细节

去除系统自动设置的操作

更换主板模式(跳线)和电源按键后,按下电源键后,系统默认弹出…
在这里插入图片描述
熟悉ubuntu的都知道, 这个配置应该可以通过gsseting设置. 通过gsetting命令很容易得知如何屏蔽该设置…

cdw@ubuntu:~$ 
cdw@ubuntu:~$ gsettings list-schemas |grep powercom.canonical.indicator.power
org.gnome.power-manager
org.gnome.settings-daemon.plugins.power
cdw@ubuntu:~$ gsettings list-keys org.gnome.settings-daemon.plugins.power |grep power
button-power
power-button-action
cdw@ubuntu:~$ gsettings range org.gnome.settings-daemon.plugins.power button-power
enum
'blank'
'suspend'
'shutdown'
'hibernate'
'interactive'
'nothing'
'logout'
cdw@ubuntu:~$ gsettings get org.gnome.settings-daemon.plugins.power button-power
'interactive'
cdw@ubuntu:~$ gsettings set org.gnome.settings-daemon.plugins.power button-power nothing
cdw@ubuntu:~$ 

系统其他电源键设置

有时修改完系统依然自动关机,我们要检查是否系统还有其他地方有类似设置,比如HandlePowerKey in /etc/systemd/logind.conf

cdw@ubuntu:/etc/systemd$ grep -r -i "power" 
logind.conf:**HandlePowerKey=poweroff**
logind.conf:#PowerKeyIgnoreInhibited=no

用户定制操作

现在短按电源键没有反应,我们可以自定义电源按键操作

  1. 首先找出电源键对应的文件
    cat /proc/bus/input/devices |grep -i power
    这个文件与目录/dev/input/event* 对应; 操作系统的驱动映射至该文件. 一般我们要查触摸屏触摸没有反应,首先检查触摸时,该文件有没有输出,定位问题在哪.
    cdw@ubuntu:/dev/input$ ls -rlt
    

total 0
crw-rw---- 1 root input 13, 63 Mar 26 20:20 mice
crw-rw---- 1 root input 13, 33 Mar 26 20:20 mouse1
crw-rw---- 1 root input 13, 32 Mar 26 20:20 mouse0
crw-rw---- 1 root input 13, 67 Mar 26 20:20 event3
crw-rw---- 1 root input 13, 65 Mar 26 20:20 event1
crw-rw---- 1 root input 13, 66 Mar 26 20:20 event2
crw-rw---- 1 root input 13, 64 Mar 26 20:20 event0
crw-rw---- 1 root input 13, 34 Mar 26 20:20 mouse2
crw-rw---- 1 root input 13, 68 Mar 26 20:20 event4
drwxr-xr-x 2 root root 140 Mar 26 20:20 by-path
drwxr-xr-x 2 root root 80 Mar 26 20:20 by-id

```
  1. 写程序响应event; 操作系统的input event 消息结构都是通用的.
    可以利用struct input_event event; 来解析event事件,如果捕获power 按键release消息,执行用户动作…
    sprintf(name, "/dev/input/event%d", atoi(argv[1]));
       if ((fd = open(name, O_RDWR, 0)) >= 0) {
           printf("%s: open, fd = %d\n", name, fd);
           for (i = 0; i < LED_MAX; i++) {
               event.time.tv_sec  = time(0);
               event.time.tv_usec = 0;
               event.type         = EV_LED;
               event.code         = i;
               event.value        = 0;
               write(fd, &event, sizeof(event));
           }
           
           while ((rc = read(fd, &event, sizeof(event))) > 0) {
             ....
             switch (event.type) {
               case EV_KEY:
                   if (event.code > BTN_MISC) {
                       printf("Button %d %s",
                              event.code & 0xff,
                              event.value ? "press" : "release");
                   } else {
                       printf("Key %d (0x%x) %s",
                              event.code & 0xff,
                              event.code & 0xff,
                              **event.value ? "press" : "release");**
                              //  execl running your command (scripts etc)......
                   }
                   break;
  1. 命令授权. 该命令需要sudo, 需要加入root授权: 加入以下代码,root用户权限编译 gcc -o powerbtn powerbtn.c ,然后chmod 4111 powerbtn…
   struct passwd *srcc_pwd;
   gid_t srcc_gid;
   uid_t srcc_uid;
   int gg,uu;
   srcc_pwd=getpwnam("root");
  srcc_gid=srcc_pwd->pw_gid;
  srcc_uid=srcc_pwd->pw_uid;
  gg=setgid(srcc_gid);
  uu=setuid(srcc_uid);
  
  1. 把该命令加入后台自动运行… (可以.profile 也可以upstartup etc )…
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/alone4together/article/details/115269465

智能推荐

MFC 文本框换行_c++ mfc同一框内输入二行怎么换行-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行

redis-desktop-manager无法连接redis-server的解决方法_redis-server doesn't support auth command or ismis-程序员宅基地

文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try

实验四 数据选择器及其应用-程序员宅基地

文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用

角谷猜想 C++实现_角谷猜想c++代码-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏5次。题目描述所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。输入 一个正整数N(N <= 2,000,000) 输出 从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"En..._角谷猜想c++代码

XNA学习笔记——用顶点缓冲和索引缓冲创建地形_positions indices 自动创建地形-程序员宅基地

文章浏览阅读1k次。1: private float[,] LoadHeightData(Texture2D heightMap) 2: { 3: float minimumHeight = 255; 4: float maximumHeight = 0; 5: 6: int width = heightMap.Width; _positions indices 自动创建地形

HTTP keep-alive详解_http keepalived-程序员宅基地

文章浏览阅读7.6w次,点赞57次,收藏204次。1.为什么要有Connection: keep-alive?在早期的HTTP/1.0中,每次http请求都要创建一个连接,而创建连接的过程需要消耗资源和时间,为了减少资源消耗,缩短响应时间,就需要重用连接。在后来的HTTP/1.0中以及HTTP/1.1中,引入了重用连接的机制,就是在http请求头中加入Connection: keep-alive来告诉对方这个请求响应完成后不要关闭,下一次咱们还用这_http keepalived

随便推点

Java加密与解密_java 加密 解密-程序员宅基地

文章浏览阅读5.5w次,点赞3次,收藏41次。加密方式主要有3种,摘要加密、对称加密与非对称加密。_java 加密 解密

sql判断以逗号分隔的字符串中是否包含某个字符串,不是模糊查询_sql server 逗号分隔包含-程序员宅基地

文章浏览阅读6.5k次,点赞2次,收藏9次。sql语句中,以逗号分隔的字符串中是否包含某个特定字符串,类似于判断一个数组中是否包含某一个元素,例如:判断 ,a,b,c,d,e,f,g,中是否包含 a ,sql语句如何实现?SQL中没有类似VB中的Split的函数。此时,如要匹配 ,6,3,9,22,中的6。可用charindex函数巧妙实现:(注意红色的逗号)charindex( ',' +cast(6 as varchar)+ ',',‘,6,3,9,22,’)>0sqlserver:sqlserver中没有封装好的方法可以实现._sql server 逗号分隔包含

环球旅行80天游戏分析【部分】-程序员宅基地

文章浏览阅读1.8k次。 第一次接触这个游戏,还是通过校内网。然后下载了一个单机绿色破解版的。感觉挺有意思,就慢慢玩了起来。后来打开游戏文件夹,发现base里面竟然都是一些xml、lua和jpg文件,感觉好熟悉,于是便开始了我的分析。 游戏目录结构如下:│ Around the World in 80 Days.exe│ bass.dll│ settings.ini│ ├─sc

百度IP地址查询API使用: 应用类型为浏览器端_百度ip归属api-程序员宅基地

文章浏览阅读8.4k次。百度普通IP定位是一套以HTTP/HTTPS形式提供的轻量级定位接口,用户可以通过该服务,根据IP定位来获取大致位置。1.首先需要成为百度地图开放平台的注册用户。http://lbsyun.baidu.com/index.php2. 申请Web服务API服务,在控制台创建一个应用:应用类型为浏览器端3.创建好应用后你,将会得到一个访问应用(AK).4.请求URLhttp://..._百度ip归属api

DataGrid背景颜色设置-程序员宅基地

文章浏览阅读4.7k次。DataGrid颜色专题在Flex运用中经常提到的有关DataGrid问题是如何改变DataGrid单元格(cell),列(column)和行(row)的背景颜色(backgroundcolor)这里对这3种颜色做一个总结。 1. 设置行(row)的背景色 主要是通过对DataGrid扩展,对protected函数drawRowBackground()进行重写,具体代码如下:package com{ im_datagrid背景颜色

使用PyTorch实现自己的图像分类-程序员宅基地

文章浏览阅读5k次。欢迎关注“小白玩转Python”,发现更多 “有趣”引言如果你刚刚开始学习 PyTorch,并想学习如何做一些基本的图像分类,那么这篇文章你一定不要错过哦~本文将通过组织自己的训练数据..._pytorch torchvision 训练自己的数据 图像分类