分类 Linux 下的文章

最近开发一个 Node 的命令行程序,其中会用到 child_process.spawn 来创建子进程做一些事情。
本地跑通了测试之后,到了 Travis 的环境下发现子进程创建不成功,debug 到 CI 服务器上之后,发现报了下面这个错误:

spawn EACCES

查了一下这个错误,发现可能是因为创建子进程调用的文件权限不正确,由于我的项目中子进程的相关文件通过源代码编译生成,因此没有不在 git 的追踪中,也就无法直接控制文件权限设置。
于是就选择在 Travis 构建完项目,执行测试之前设置相关文件权限:

sudo chmod -R a+rwx folder/files

设置之后,子进程就可以正常创建了,这个问题比较容易被忽略。

最近在由于某个开发的移动平台的工作环境变成了 Firefox,在一次重新安装了 Ubuntu 系统之后,mp3 无法正常播放,提示错误大致如下

 Warning: Cannot play media. No decoders for requested formats: audio/mpeg

不管是通过是 <audio src></audio> 还是 new Audio() 的方式,都报出这个错误,最后总结出来三条解决方法:

  1. 安装 ubuntu-restricted-extras sudo apt-get install ubuntu-restricted-extras
  2. 安装 gnash sudo apt-get install gnash (一个 gnu 做的 flash 播放器,其中包含了浏览器插件)
    这条比较容易忽略,虽然我也不明白为什么 Firefox 调用解码器还和 flash 有关。
  3. 安装最新版的 Firefox,实测 59 版本就算满足了上面两条,还是无法正常播放,而 63 版本正常。

问题

出于个人习惯,我在终端模拟器(iTerm2 等)中,都是将光标(cursor)设置为 vertical bar,而在 neovim 中则是将 normal 模式的光标设置为 block。

这样一来,当我从 neovim 的正常模式退出时,导致终端的光标样式也变成了 block,非常麻烦。主要是因为终端没有提供 API 查询当前的光标样式设置,因此 neovim 在退出时也不知道要如何重设光标。

解决

思路就是退出 neovim 的时候把光标重新设置为 vertical bar(ver25)。

if $TERM_PROGRAM =~ "iTerm"
  " reset cursor when vim exits
  au VimLeave * set guicursor=a:ver25-blinkon0
endif

其中ver25就是想要设置的样式,也可以是block等等,这样在退出 neovim 的时候就会重新将 iTerm2 的光标设置为 vertical bar。

ubuntu 中文本地化之后,默认安装了两个字体 arphic-ukai 和 arphic-uming,导致默认中文字体非常难看,没有很好的渲染,卸载这两个字体就可以改善中文字体效果。

sudo apt-get remove fonts-arphic-ukai fonts-arphic-uming

1.安装apache。打开终端,可以切换到root模式(下面就不说了,直接写命令)

sudo -s

这是切换到root模式,这里提示要密码,输入密码即可。

sudo apt-get install apache2

这里会自动安装apache,不要关闭终端。等待安装完成。

用firefox打开http://localhost/,提示有“it works”,就是正常工作了。

2.安装php。

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

测试:sudo gedit /var/www/test.php

写入,然后保存,并用firefox打开 http://localhost/test.php,会显示PHP配置信息就是正确安装了php

3.安装mysql数据库

sudo apt-get install mysql-server

等到弹出密码输入,输入密码

给外部连接mysql的权限http://www.myxzy.com/read.php/279.htm

4.安装MYSQL for Apache HTTP Server

sudo apt-get install libapache2-mod-auth-mysql

sudo apt-get install php5-mysql

要让PHP与MySql一起工作,编辑

sudo gedit /etc/php5/apache2/php.ini

取消对;extension=mysql.so的注释,然后保存文件,最后重启apache

sudo /etc/init.d/apache2 restart

到了这里php+mysql+apache基本安装已经完成。

Ubuntu下,A卡的开源驱动有一些自带的电源管理功能,对于笔记本用户来说尤其重要,无论是风扇降噪,还是降温,都有不错的效果,下面是使用方法:


sudo -i
#进入root模式
echo dynpm > /sys/class/drm/card0/device/power_method
## 基于GPU负载的动态调整
echo profile > /sys/class/drm/card0/device/power_method
## 基于Profile(配置文件)的频率切换;这是默认的模式

如果你选择了Profile模式的话,可以有几个不同的配置文件进行切换


echo default > /sys/class/drm/card0/device/power_profile
# 默认的模式
echo low > /sys/class/drm/card0/device/power_profile
## 强制使用最低的可用频率;
## 在一些笔记本和显示设备上可能会有一定问题, 因为这是关闭dpms时使用的模式
echo mid > /sys/class/drm/card0/device/power_profile
## 强制GPU使用'mid'的电源状态;在常规情况下,要比'low'更安全
echo high > /sys/class/drm/card0/device/power_profile
## 强制使用最高可用频率
echo auto > /sys/class/drm/card-0/device/power_profile
## 在 'high'和'mid'之前切换,根据系统是否使用电池供电。

实际情况下,使用 dynpm 或者 profile 中的 mid 模式,都可以有效的降低风扇转速和显卡温度。

The free online CSS cleaner tool helps you to organize style files for websites.

  1. 首先,从 virtualbox.org 上下载最新的RPM包,安装
  2. 安装必要的编译器(以下请在管理员权限下操作)

    yum install -y kernel-headers kernel-devel dkms gcc
  3. 打开VirtualBox 服务

    /etc/init.d/vboxdrv setup

    此处可能会报错,错误情况如下:
    Trying to register the VirtualBox kernel modules using DKMSError!
    Bad return status for module build on kernel: 3.5.3-1.fc17.x86_64 (x86_64)
    Consult /var/lib/dkms/vboxhost/4.1.20/build/make.log for more information.[FAILED] (Failed, trying without DKMS)
    Recompiling VirtualBox kernel modules [FAILED](Look at /var/log/vbox-install.log to find out what went wrong)

    出现这个问题,请检查编译器是否正确安装,尤其是DKMS
  4. 将当前用户添加入 vboxusers 组中(请先退出SU,不然用户是root)
    1. 查看当前用户whoami
    2. 添加当前用户到vboxusers组中

      su -c usermod -G vboxusers -a username

      username自行改成你的用户名
  5. 至此,你已经可以正常使用VirtualBox

    VirtualBox

Fedora

一、grub2启动顺序改变

装完Fedora等Linux系统之后,一般来说,grub2默认的启动系统都是Linux,但是有很多体验Linux的人还是以Windows为主,所以需要将Windows设为默认启动项,步骤如下:

  1. 首先找到Windows的menuentry.# cat /boot/grub2/grub.cfg | grep Windows

    参考输出结果:
    menuentry “Windows 7 (loader) (on /dev/sda1)”–class windows –class os

    可能会不止一个,但是没有关系,知道你平时启动的那一个就可以了,只要确定sda位置。
  2. 设置Windows 作为默认的启动项(这儿只能使用上面命令输出中双引号 ” ” 或者单引号 ‘ ‘ 中的内容,即加粗部分)
    # grub2-set-default "Windows 7 (loader) (on /dev/sda1)"
  3. 验证默认启动项
    # grub2-editenv list

    参考输出结果:
    saved_entry=Windows 7 (loader) (on /dev/sda1)

    那么好的,我们已经成功设置了,最后再更新grub2设置文件即可
  4. 生成,更新 grub.cfg (可选)

    # grub2-mkconfig -o /boot/grub2/grub.cfg

当然,/etc/default/grub 中还可以配置timeout,背景图片等等,可以自行搜索。

二、清理多余内核

随着不断的更新,系统的内核会越来越多,将它们放在那里也没有任何关系,万一新内核有问题,可以随时换回来,当然,时间就了,就积累了一大堆旧内核,我们也可以很方便地将它们清理掉。

我的建议是:一直保留上一个版本的一个内核,这样,新内核有任何问题,都可以随时换回去,比较安全。

  1. 我们先检查系统现有内核# rpm -q kernel

    参考输出结果:
    kernel-3.3.4-3.fc16.x86_64
    kernel-3.3.5-2.fc16.x86_64
    不同的情况下,会有不同的结果,一般来说,较新的内核排在下面,从版本号就可以看出,那么我们就找到了需要清理的旧的内核。
  2. 删除不用的内核yum remove kernel-3.3.4-3.fc16.x86_64

    只要将内核改成对应的就可以了,可以直接复制第一条命令的结果

    然后再次检查内核就会发现内核已被移除,这样子的方法比手动删除更方便更安全。

注:随着近几次更新,Ubuntu的兼容性提升了很多,这个问题应该比较少出现了。

很多人在安装Ubuntu之后发现不能调节显示器亮度了,包括“系统设置”和快捷键,搜索一番之后发现了一个解决方案,目前使用一切良好。

在终端输入: sudo gedit /etc/X11/xorg.conf (也就是编辑xorg.conf) 文件内加入以下内容:

Section "Screen"
Identifier "Default Screen"
DefaultDepth 24
EndSection
Section "Module"
Load "glx"
EndSection
Section "Device"
Identifier "Default Device"
Driver "nvidia"
Option "NoLogo" "True"
Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection

添加完之后重启系统,就可以通过“系统设置”和快捷键正常调节亮度了