博客

Ubuntu应用程序列表与默认应用程序

本文主要解决的问题有两个:

  • 如何将新的程序加入到应用程序列表
  • 如何将新的程序添加至openwith清单以使该程序成为默认应用程序

并非所用程序都会被自动加入到应用程序列表中,因为Ubuntu通常不需要使用鼠标来打开一个程序。但是,在一些文件管理系统或者知识管理系统中,包含着其他格式的文件,而这些文件的打开通常是使用鼠标操作的。如果打开该文件的程序不在默认应用程序列表或者openwith清单中,那么双击该文件时该文件并不能被特定的应用程序打开。下面我们将以XMind为例,展示如何将XMind程序加入到应用程序列表以及在openwith清单中显示XMind。

应用程序列表由/usr/local/applications中的.desktop决定,利用如下命令创建XMind.desktop文件

cd /usr/local/aaplications
touch XMind.desktop

采用sudo vim XMind.desktop编辑XMind.desktop文件,添加如下代码

[Desktop Entry]
Version=8.0
Type=Application
Name=XMind
Comment=Open-source reference manager (standalone version)
Exec=/home/opt/xmind/XMind_amd64/XMind
Icon=/home/opt/xmind/XMind_amd64/icons/XMind.jpg
StartupNotify=true

这里最为重要的是Exec这一行,填写的是应用程序可执行文件的路径。Icon表示的是应用程序在应用程序列表中显示的图标,这个可以自己在网上找一张图片,然后在Icon一列中写上该图片的路径即可。此时,我们将在应用程序列表中看到XMind程序图标

应用程序列表中的XMind

但此时,双击.xmind格式的文件是不会默认使用XMind打开的,这是因为XMind不在应用程序openweith清单中。右击.xmind文件,选择properties,将会出现openwith清单。如何让XMind在openwith清单中出现以使得XMind成为打开.xmind文件的默认应用程序呢?采用如下设置,在刚刚创建的XMind.desktop中的Exec一行中添加%F,即

[Desktop Entry]
Version=8.0
Type=Application
Name=XMind
Comment=Open-source reference manager (standalone version)
Exec=/home/opt/xmind/XMind_amd64/XMind %F
Icon=/home/opt/xmind/XMind_amd64/icons/XMind.jpg
StartupNotify=true

我们就可以在openwith清单中找到XMind并将其设为打开.xmind文件的默认应用程序。

owncloud用户数据目录迁移

owncloud当用户越多,用户数据越多时,对数据存储提出了一定的要求。此时如果需要对数据进行迁移,主要需要移动的是data文件。我们这里说的迁移是指换一个大的存储目录。

假定在Linux下采用LAMP搭建的owncloud,原来的数据目录为/var/www/html/owncloud/data,现在想要用一个新的盘来存储。可以通过如下步骤。

  • 1. 将盘格式化为Linux ext4文件系统,这样做是因为ntfs盘挂载是只能以root用户访问,而ext4文件系统能够更改文件所属用户,假设新的设备分区为/dev/sdb1,可以采用如下命令进行格式化
    sudo mkfs -t ext4 -c /dev/sdb1
    注意!如果原来分区上有重要数据,需要先做备份
  • 2. 关闭apache服务
    sudo su
    systemctl stop apache2
  • 3. 创建/var/www/html/owncloud/data_2,并将格式化后的新分区挂载到/var/www/html/owncloud/data_2,然后将更改新目录的用户和权限,依次采用如下命令
    mkdir /var/www/html/owncloud/data_2
    mount /dev/sdb1 /var/www/html/owncloud/data_2
    chown -R www-data:www-data data_2
    chmod o-rwx data_2
    最后一步是指用户组中其他用户不能访问
  • 4. 将原数据目录中的数据备份到data_2,采用如下啊命令
    rsync -avz /var/www/html/owncloud/data /var/www/html/owncloud/data_2
  • 5. 删除原数据库目录
    rm -r /var/www/html/owncloud/data
  • 6. 在/var/www/html/owncloud/创建新的目录的软链接
    sudo -u www-data ln -s /var/www/html/owncloud/data_2/data /var/www/html/owncloud/data
  • 7. 开启apache服务
    systemctl start apacha2

wordpress建立数据库连接错误与个人网站内存管理

问题描述:当在vps上搭建个人网站的时候,由于vps上内存有限,在mysql配置过程中没有注意,随着访问次数和页面点击次数增多,mysql服务占用内存增大,进而使得swap逐渐被占满,最终导致mysql服务被kill,即mysql停止,在网页上出现“建立数据库连接错误”。

检测方式:此类情况出现时登录到vps中,输入如下代码
free -m
查看swap全部被使用
service mysql status
查看mysql运行状态
如果mysql停止运行,swap被占满,则属于这种情况。要解决这个问题,需要分为两个步骤,首先是将已经被占满的内存进行清理,其次是重新设置mysql服务。

一. 对swap进行清理

有两个可选的方案

  1. 当内存较小,而swap也已经占满,这是需要重启vps,采用如下命令:
    sudo reboot
  2. 当内存较大是,处于free的内存大于used的swap内存时,可以采用如下命令
    sudo su
    sync
    swapoff -a
    swapon -a
    sync
    echo 1 > /proc/sys/vm/drop_caches
    echo 2 > /proc/sys/vm/drop_caches
    echo 3 > /proc/sys/vm/drop_caches

    详细内容可参考ubuntu 手动释放缓存 (清理内存cache)

二. 对mysql进行配置

“出现建立数据库连接错误”的关键原因是mysql配置与vps硬件配置不相符,导致了mysql服务调用的内存大于实际物理内存,最终导致mysql服务停止。因此,需要调整mysql配置以使其符合实际硬件配置的可承受范围。mysql配置文件可以通过如下命令进行编辑
vim /etc/mysql/mysql.conf.d/mysqld.cnf
具体配置可以参考mySQL内存及虚拟内存优化设置