分类目录归档:操作系统

操作系统的各种玩法

用vagrant来搭建自己专属的开发环境

最近vagrant比较流行,它的主要作用简言之就是打包一份已经装好的系统,打包好的系统在各平台通用。特别是对于一个比较复杂的开发环境,新换一台电脑,新换一个工作,必须在重新搭建环境,这种事情搞起来还是比较费时间的,比如PHP开发所用的LAMP环境(我平时都装LANMP – Apache+Nginx+MySQL+PHP),还有Redis,MongoDB,RabbitMQ这些扩展的东东,虽然自己有完全的文档,但是多年搞下来也成一个体力活儿了。这样vagrant对我的优势简直不言而愉了。可以将一个已经打包好的系统给你,你可以和我有完全相当的开发环境。节省时间,提升效率

废话不多说了,接下来开始使用这个vagrant

  • 安装软件的事情就不啰嗦了(vagrant+virtualbox),闭眼下一步就行
  • 下载一个box镜像(直接找个镜像下载就行)

    上面那两步完成以后,让我们来添加一个叫lamp的box

添加一个叫lamp的虚拟机(MAC OS X环境)

vi Vagrantfile 编辑配置文件,加入以下内容,在初始化的时候会用到

在这里介绍一下网络配置,一般情况单机开发用私有网络,只有自己可以访问这个IP,但是这个IP还可以联互联网,满足了我们大部分人的需求

vagrant ssh

vagrant package lamp –output D:/vagrant/lamp.box

———————————–分割线下面是一些命令————————————

———————————–分割线下面是在windows下实际操作————————————

用xshell来连接vagrant

将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)

由于工作和学习需要,经常要开一个虚拟机开测试和开发,虚拟机我选择Oracle公司的VirtualBox(用了几年了,感觉不错的一款产品),经常开着这个窗口感觉有些浪费资源,这样隐藏窗口就在需求了。

将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)
  • 开始=>运行=>cmd进入DOS窗口

这在Linux系统和MAC上同样适用,只要替换成相应的命令即可

解释:其中master是这个虚拟机的名称

Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。<br>Headless模式针对在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。

Linux下查看和添加PATH环境变量

$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。

编辑 PATH 声明,其格式为:

PATH=$PATH:<PATH1>:<PATH2>:<PATH3>:——:<PATHN>

你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:

可用 export命令查看PATH值。

单独查看PATH环境变量,可用:

添加PATH环境变量,可用:

查看命令:echo $PATH, 可判断是否添加PATH成功。
上述方法的PATH 在终端关闭后就会消失。所以还是建议通过编辑/etc/profile来改PATH,也可以改家目录下的.bashrc(即:~/.bashrc)。
第二种方法:

在文档最后,添加:

保存,退出,然后运行:

不报错则成功。

实例:在使用laravel时要将~/.composer/vendor/bin加入到PATH

 

详见:http://blog.sciencenet.cn/home.php?mod=space&uid=830496&do=blog&id=676304

linux挂载硬盘报错(you must specify the filesystem type)

今天自己的虚拟机磁盘用完成,于是想加一磁盘,当挂载时发现报错you must specify the filesystem type。(注:我的系统环境是lcentos6.3装在virtualbox的虚拟机)

原来是因为该磁盘没有格式分区导致的于是有了以下操作:

1)先查看一下当前的系统情况,新加的盘是sdb

 2)尝试挂载,报错

继续阅读

ubuntu14.04 64位运行xampp错误解决方案

这前一直使用ubuntu12.04 64位,在运行php集成环境xampp时会出现以下信息,说不支持32位应用程序

[sudo] password for zzs:
XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system.

解决方式是安装32位程序支持库(在ubuntu12.04时我是用以下方法解决的),
但最近将系统升级成ubuntu14.04,这次出现以下信息
zzs@ubuntu:~$ sudo apt-get install ia32-libs
[sudo] password for zzs:
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
现在没有可用的软件包 ia32-libs,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
可是下列软件包取代了它:
lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2 继续阅读

ubuntu 12.04 安装显卡驱动后,开关机画面分辨率变低解决方案

ubuntu 12.04 安装显卡驱动后,开机和关机的画面分辨率可能会变低或者变成黑屏。

解决方法如下:

1,安装

sudo apt-get install v86d hwinfo

2,找到支持的分辨率

sudo hwinfo –framebuffer

这个很有可能找不到,或者结果不对。没关系,这个只是一个参考。

3,编辑grub文件

sudo gedit /etc/default/grub

或者sudo leafpad /etc/default/grub


GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
改成
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset video=uvesafb:mode_option=1360×768-24,mtrr=3,scroll=ywrap”


#GRUB_GFXMODE=640×480
改成
GRUB_GFXMODE=1024×768
注意,不要#号

在(GRUB_GFXMODE=1024×768)这句话下面加上

GRUB_GFXPAYLOAD_LINUX=1360×768
这里写上第2步的得到的分辨率,如果不对的话可以手动修改

然后保存文件

4,执行如下命令

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash

sudo update-initramfs -u

sudo update-grub

以上执行完后,请重启电脑。看看分辨率是不是好了。

linux查看系统的日志的一些实用操作[整理]

1.last

-a 把从何处登入系统的主机名称或IP地址,显示在最后一行。
-d 指定记录文件。指定记录文件。将IP地址转换成主机名称。
-f <记录文件>  指定记录文件。
-n <显示列数>或-<显示列数>  设置列出名单的显示列数。
-R 不显示登入系统的主机名称或IP地址。
-x 显示系统关机,重新开机,以及执行等级的改变等信息

eg.以下看所有的重启、关机记录

2.history
列出所有的历史记录:

只列出最近10条记录:

使用命令记录号码执行命令,执行历史清单中的第99条命令

重复执行上一个命令

执行最后一次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)

逐屏列出所有的历史记录:

立即清空history当前所有历史命令的记录

3.cat, tail 和 watch
系统所有的日志都在 /var/log 下面自己看(具体用途可以自己查,附录列出一些常用的日志)

tail -f

如果日志在更新,如何实时查看

还可以使用

-d表示高亮不同的地方,-n表示多少秒刷新一次。

该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,
这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可。

4.除此之外还有more, less ,dmesg|more,这里就不作一一列举了,因为命令太多了,关键看个人喜好和业务需求.个人常用的就是以上那些

[附]
linux日志文件说明

/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

在ubuntu桌面创建快捷方式

在ubuntu上装了一个Sublime Text 2,想给它创建一个快捷方式到桌面发现不行,要不然就是没有图标,非常的难看

于是乎,突然想起在删除文件的时候,经常看到xxx.desktop这样的文件。。。

#回到桌面看看是不是已经有一个图标了,点击就可以用了。还可以拖到别的地方(包括unity)

注意:zzs/ubuntu_soft/是我的文件存放目录,请酌情修改( 如果你的存放路径中有空格,请转义)

VirtualBox上安装了Windows XP不能全屏

VirtualBox上安装了Windows XP发现不能全屏(就算点全屏,周围也是空白。。。)。
想起了以前用vmware的时候可以版自动识别当前屏幕分辨率(字体不会拉伸,变形)。
它需要安装一个叫 VMtools的工具,这个选项在菜单的相关工具栏可以找的到。

VirtualBox肯定也有类似的工具包。只是名称不同而已(这是稍稍百度以后得出的结果)
安装方法等你的“虚拟XP”启动以后 点虚拟机控制台工具栏的 设备->安装增强功能->
接着可以会询问此程序不是Windows所认识的东西这类的,一路确定
完成以后重启虚拟机,现在可以把虚拟机随意切换到  无缝模式,全屏模式,自动缩放模式

笔者特别推荐无缝模式,现在的这个Windows XP就像一个在Ubuntu的一个小应用程序(屏幕充分利用,因为笔者的主操作系统为Ubuntu,用这个XP是做一些辅助的事情。像Ubuntu做起来比较费劲的事,登录网银什么 ps:有些网银只能用IE登录)页面一样,和自己所打开的别的窗口是一样的
用着特别舒服。好啦现在可以随便装一些东西,在ubuntu装不上的就可以装在XP上面了。
 

简单的认识进程和线程

简单的认识进程和线程
一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。