Category: Ubuntu

Tips for cron

Hi there, We all know that if one wants to schedule jobs (commands or shell scripts) to run periodically at certain times or dates, he can use `cron`. If you `man cron` you would like to get: Cron – daemon to execute scheduled commands. And here are some tips for newcomes: 1. Use absolute path […]

PHP 调用 SHELL 需要注意的地方

最近需要从前端调用系统命令实现一些东西,然后返回到前端来。 思来想去,觉得 html <-> php <-> shell的模式应该不错。从html到php可以用ajax实现动态交互,但php调用shell的这个过程需要注意一些地方。在这里浪费了不少时间。 第一:调用方式 PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。具体的用法Google一下已经很多了。 第二:权限问题 由于我的web项目是在apache目录下的,但apache并没有足够的权限执行一些诸如mkdir等命令,导致我拔一些东西并储存的时候毫无反应。简单的做法就是修改一下web项目所在目录权限就可以了。 比如 $ chmod -R 777 /home/www/example  

Linux系统启动过程

面试的时候被问到Linux启动过程,没有答得很好。回来收集了一些资料,发现有一篇博客写得不错,不过是英文的。特翻译过来供广大小伙伴们参考:) 原文: http://www.thegeekstuff.com/2011/02/linux-boot-process/ ———————————————————- 我是背景 ——————————————————– 通常,我们按下开机键,几秒钟后,我们就能看到Linux的登录界面。 但是你有没有想过,在屏幕的背后,这一切是怎么发生的呢? 下面会为大家分六个阶段简述一下一个典型的Linux操作系统的启动过程。 1. BIOS BIOS,即 Basic Input/Output System BIOS,基本输入输出系统。 对系统做完整性检查,即计算机硬件能否满足运行的基本条件。如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止,比如内存卡没有插好。 查找,加载以及执行引导装载程序。 它会在软盘、光盘或者硬盘驱动器等上查找引导装载程序。你也可以在BIOS启动过程中按F12或者F2(一般来说是这两个键)来改变这个顺序。比如重装系统的时候,你在BIOS阶段按F12,然后选择从U盘启动。 一旦引导装载程序被找到并且加载到了内存中,BIOS就将计算机的控制权交给它了。 简单来说,BIOS阶段就是加载并执行MBR 2. MBR MBR,即Master Boot Record. MBR, 主引导记录。 位于启动盘的第一扇区,一般为 /dev/hda或者/dev/sda MBR 共有512位,由三个部分组成,1)第1-446位,主引导加载程序信息 2)接下来64位存放分区表 3)最后两位用来存储MBR有效标记 它包含了GRUB的信息(或者在一些老系统上的LILO信息) 简单来说,MBR阶段就是加载并执行GRUB 3. GRUB GRUB,即Grand Unified Bootloader,启动管理器。 如果你在操作系统分区中装了好几个内核,通过GRUB,你就可以选择启动哪一个。 GRUB会展示一个初始化的界面,等待你的选择,如果过了等待时间,它就会加载在grub配置文件中指定的默认内核镜像。 GRUB能够识别文件系统(在老Linux系统上的LILO并不能识别文件系统)。 Grub 配置文件在 /boot/grub/grub.conf (/etc/grub.conf 只是一个链接)。下面是一个CentOS中的grub.conf文件信息 #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-194.el5PAE) root […]

Linux 下 C++ 连接 Mysql

——国外有一篇博客写得挺好,有一些小错误,改正以后翻译过来,发这里了。 C++是一个效率非常高的编程语言 Linux 是一个类Unix操作系统,它促进了开源软件社区的发展,并且用这些开源软件就几乎足以构建一个复杂精妙的企业系统。 MySQL是一个流行的多线程、多用户的数据库管理系统,全球有超过1000万的安装量。   这篇文章将演示如何在Linux下用C++连接MySQL。 首先我们需要将所需要的头文件和库全部包含进来 #include <stdio.h> #include <mysql.h> 然后我们来定义一下main函数 int main() { // code  return 0; }; 然后我们定义一下需要用到的变量,你应该将这些写到main函数里去。 MYSQL_RES *result; MYSQL_ROW row; MYSQL *connection, mysql; int state; 既然要使用MySQL数据库,我们首先就得连上它,使用下面的代码即可: mysql_init(&mysql); connection = mysql_real_connect(&mysql,host,usr,pswd,database,0,0,0); 其中 host – 数据库所在主机的名字,比如 “localhost” 或者 “192.168.250.100” usr – 连接数据库时使用的用户名 pswd – 连接数据库时使用的密码 database – 数据库的名称 如果有错误发生,如用户名/密码不匹配,我们可以通过以下代码获取到错误信息: if (connection == NULL) { printf(“%s\n”, […]

PHP与C++性能比较

PHP是速度很快的脚本语言,但是用了框架以后好像感觉挺慢的。于是猜测会不会PHP本身也不是很快。如果不是很快,能否采用PHP调用本地动态链接库的形式来提升速度。 于是有了下面的对比实验。 测试环境 1. 硬件环境如下图所示。 2. 软件环境 系统: Ubuntu 12.10 gcc版本: Thread model: posix gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) php版本: PHP 5.3.22 (cli) (built: Mar 14 2013 20:37:16) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies php开发环境: LAMP,所有安装包均是通过源码编译安装而成,编译过程中会自动根据本机各项参数进行最优配置。性能比apt-get install命令直接安装好。 关于以源码包方式搭建LAMP请参考文章:https://keping.me/linux-php-dev-by-source-style/ 测试方法 由于冒泡排序在时间复杂度上相当稳定——O(n2),在最大程度上减少了数据可能带来的影响,故采取计算冒泡排序的运行时间的方法来进行此次实验。 对比测试分组 分组1: C++直接调用程序内的函数 分组2: C++调用打包好的动态链接库文件(.so文件,该文件也是自己写好并打包) 分组3: PHP直接调用程序内的函数 […]

Linux 常用命令

老是忘记一些命令。于是便记了下来:) SSH常用命令 1. 不带端口号的连接: $ ssh -l username ip $ ssh -l ubuntu0 192.168.123.100 2. 带端口号的链接: $ ssh -l username ip -p port $ ssh -l root 224.217.33.111 -p 8888 SCP常用命令 1. 从远端拷贝单个文件到本地,带端口号(-P 为大写): $ scp -P port root@ip:path_remote path_local $ scp -P 8888 root@224.217.33.111:/home/aku/www/weekphp/sql.txt /home/david/ 2. 从远端拷贝整个文件目录到本地,带端口号(-P 为大写): $ scp -r -p port username@ip:path_remote […]

Compile and Install LAMP(Linux/Apache/MySQL/PHP) from source on Ubuntu 12.10

This blog will guide you finish the compiling and installing a LAMP Server from source on Ubuntu step by step. Of course, it will take you a little much time(Thanks for the 15 source packages ) ,so a cup of coffee will be a good choice 🙂 Zeroth. Here follows some source packages, which will […]