Onway

我是一只菜菜菜菜鸟...
posts - 61, comments - 56, trackbacks - 0, articles - 34

重装系统后或者在另外的机器进行数据同步的时候,都要先在ubuntu one的客户端先登录上帐号,然后在设备选项里删掉原来的设备名(hostname),最后在云文件夹里选择需要同步的文件(文件夹)。
其实我的问题是:我先将原来云同步的本地数据拷贝到了另外一个新机器,然后我在ubuntu one的客户端删掉了旧机器设备,使用新机器进行云同步。问题是数据需要下载还是上传进行同步呢?或者都不需要?(其实如果文件名和内容都相同的话就没必要上传下载了,对比一个类似md5的校验码就可以了)。另外,云空间的数据的三个时间(atime,ctime,mtime)都比新机器硬盘里的数据要旧。

posted @ 2012-01-20 11:56 Onway 阅读(441) | 评论 (0)编辑 收藏

使用的是ssh登录查看要进行传输的数据,然后用基于ssh的scp命令进行,速度是11m多点每秒,其实如果用不加密的ftp应该会更快,但对这些网络应用都非常的不熟悉。
安装好ssh的服务器后(忘记了怎么安装的,网上教程很多,或者直接ubuntu软件中心都可以吧)
然后客户端的登录命令是:ssh username@hostname
文件从服务器拷贝回本地:scp username@host:filepath local-filepath
其实应该有很多这方面的图像工具,但这两个命令已经够本次的需要了,具体学习留待以后吧。加上-r参数或者通配符就可以将文件夹或者里面的所有文件拷贝过来了。

posted @ 2012-01-20 11:53 Onway 阅读(1080) | 评论 (0)编辑 收藏

因为安装ubuntu的时候重建了分区表,在打算安装win7的分区将其删除了,变为空闲。
在指定win7的安装分区的时候同样是无法识别分区格式。
然后脑残又进入ubuntu将其格式化为NTFS,同样还是无法识别(windows怎么就这么娇气呢?!)
其实在指定win7安装分区的时候,不能识别的格式的分区,只要将其删除,然后创建,再格式化就可以了。

posted @ 2012-01-20 11:51 Onway 阅读(1856) | 评论 (0)编辑 收藏

由于联想笔记本带有一个隐藏的分区,安装ubuntu的时候说有一个几千字节的偏移,无法继续。
只能重新建立了分区表。这不是GC,GC的是刚装上驱动的win7就这样没有了。

posted @ 2012-01-20 11:44 Onway 阅读(474) | 评论 (0)编辑 收藏

其实这东西进行过好几次了,但是每次都得上网查查命令,三两条的命令都记不住。
学校用的是网通,用自带的源速度非常不错,回到家里用电信就特不给力了,然后换了网易的源,速度非常可以。

先备份一下/etc/apt/sources.list,然后用以下内容替换掉整个文件,#开始行是注释。
deb http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted
保存后执行一下sudo apt-get update就可以了。

posted @ 2012-01-20 11:40 Onway 阅读(2613) | 评论 (1)编辑 收藏

改自:http://blog.163.com/peng_peng1028/blog/static/107463820118754931710/

进入ubuntu光盘(11.04的livecd模式)
3打开终端
// 列出所有磁盘, 看清要把grub2修复在那个磁盘里~
sudo fdisk -l
//挂载根目录的分区
sudo mount /dev/sda1 /mnt
//这步只给把 /boot 另外挂载到与根目录不同分区的同学
sudo mount /dev/sda2 /mnt/boot
//挂载其他分区或设备 (不能漏掉,很重要)
sudo mount –bind /dev /mnt/dev
//另外的教程还有一步是:sudo mount --bind /proc /mnt/proc
//不知道是否有必要进行这一步,反正是加上了这步是可以的。
//改变根目录 这里不详细解释chroot的含义,讲起来有点玄,用起来就一点都不玄,很容易理解。
sudo chroot /mnt
//以下这一步我是重启后进入了ubuntu后再执行的
//运行update-grub更新配置文件(其实就是重建/boot/grub/grub.cfg)
update-grub
//执行sudo chroo /mnt后直接来到下面这一步,
//另外教程说可以安装道ubuntu所在分区,但是我试过不行,只能装到MBR
//我的情况是,重装或新装(都试过)win7后MBR被修改了,无法引导进入ubuntu。
//安装GRUB2到指定硬盘的MBR
grub-install /dev/sda
//然后原文是退出root用户和umount的,不过,我们态度强硬一点,直接重启
4进入ubuntu 后sudo update-grub
XP就在引导里了,
5设置默认xp启动
cd /boot/grub/
sudo gedit grub.cfg

把“set default=4“
红字部分即为你默认OS的启动是的顺序-1,比如说我开机是winXP默认在第五行,就将红色部分改为4即可。
set timeout=2加快开机速度

posted @ 2012-01-20 11:38 Onway 阅读(811) | 评论 (0)编辑 收藏

     摘要: STREAMS相关内容和伪终端真是没看懂。从十一月份断电以来到现在这个学期的最后一天,每个晚上翻几页,总算将书翻完了。2012-1-13。  阅读全文

posted @ 2012-01-13 09:44 Onway 阅读(440) | 评论 (0)编辑 收藏

     摘要: 上个周六看到的一篇教程终于让我决定要学学汇编语言了,上周日开始到今天周六刚好一个星期,赶在2012来临之前算是把这本书看完了,也留下了一万字的笔记。只是从第十章开始就没做过书上的实验了,后面的综合研究也只是一页一页的翻了过去。改写书上提到的一个故事:COOL先生用了3天(或更短)的时间就学会了汇编语言。我会相信这个故事,只是故事的主角不会是我。  阅读全文

posted @ 2011-12-31 16:03 Onway 阅读(1154) | 评论 (0)编辑 收藏

2011-12-21 第十五章 进程间通讯
第一节 引言
1,过去,UNIX系统IPC是各种进程通讯方式的统称。
2,套接字和STREAMS是仅有的两种支持不同主机上各个进程间IPC的类型。

第二节 管道
1,管道使用例程:
int main()
{
int n,fd[2];
pid_t pid;
char line[MAXLINE];

if(pipe(fd) < 0)
err_sys("pipe error");
if(pid = fork() < 0)
err_sys("fock error");
else if(pid > 0){
close(fd[0]);
write(fd[1],"hello world\n",12);
} else {
close(fd[1]);
n = read(fd[0],line,MAXLINE);
write(STDOUT_FILENO,line,n);
}
exit(0);
}

第三节 popen和pclose函数
1,这两个函数实现的操作是:创建一个管道,调用fork产生一个子进程,关闭管道的不使用端,执行一个shell以运行命令,然后等待命令终止。

第四节 协同进程
1,当一个程序产生某个过滤程序的输入,同时又读取该过滤程序的输出时,则该过滤程序就成为协同进程。
2,注意协同进程的IO缓冲方式,以避免死锁的产生。

第五节 FIFO
1,FIFO有时被称为命名管道。FIFO是一种文件类型。
2,FIFO有下面两种用途:
a,FIFO由shell命令使用以便将数据从一条管道线传送到另一条,为此无需创建中间临时文件。
b,FIFO用于客户进程-服务器进程应用程序中,以在客户进程和服务器进程之间传递数据。
3,管道只能用于进程间的线性连接,然而,因为FIFO具有名字,它可以用于非线性连接。

第六节 XSI IPC
1,有三种IPC我们称为XSI IPC,即消息队列,信号量以及共享存储器。
2,以参数key和flag创建IPC结构,返回其标识符,以其引用该IPC结构。
3,IPC_PRIVATE是键,IPC_CREATE和IPC_EXCL是flag的位标志。
4,XSI IPC为每一个IPC结构设置了一个ipc_perm结构。该结构规定了权限和所有者。
5,XSI IPC的主要问题是:
a,IPC结构是在系统范围内起作用的,没有访问计数。
b,这些IPC结构在文件系统中没有名字。为了支持它们,不得不增加了十几条新的系统调用和一些新的命令。
c,IPC结构不使用文件描述符,不能对它们使用多路转接IO函数。

第七节 消息队列
1,megget用于创建一个新的消息队列或打开一个现存的队列。
2,msgsnd将数据放到消息队列中。
3,msgrcv从消息队列中取用函数。
4,msgctl对消息队列指定执行多种操作。
5,在新的应用程序中不应当再使用消息队列。

第八节 信号量
1,信号量是一个计数器,用于安排多个进程对共享数据对象的访问。
2,一个信号量控制一个共享资源的使用情况。
3,使用信号量要先创建一个信号量集,调用函数semget。
4,semctl函数包含了多种信号量的操作。
5,函数semop自动原子性地执行信号量集合上的操作数组。
6,虽然记录锁慢于信号量,但如果只需锁一个资源并且不需要使用XSI信号量的所有花销功能,则宁可使用记录锁。理由是使用简易,且进程终止时系统会处理任何遗留下来的锁。

第九节 共享存储
1,共享存储允许两个或更多进程共享一给定的存储区。因为数据不需要在客户进程和服务器之间复制,所以这是最快的一种IPC。
2,使用共享存储时需要掌握的唯一窍门是多个进程之间对一给定存储区的同步访问。
3,通常,信号量被用来实现对共享存储访问的同步。(记录锁也可以)。
4,调用shmget获得一个共享存储标识符。
5,shmctl对共享存储段执行多种操作。
6,共享存储段创建之后就可以使用shmat连接它的地址空间。
7,当对共享存储段的操作已经结束的时候,调用shmdt脱接该段。
8,使用存储映射使用/dev/zero的优点是:在调用mmap创建映射区之前,无需存在一个实际文件。其缺点是:只能在相关进程间起作用。另外,对比/dev/zero的更好选择,还可使用匿名存储映射。

第十节 客户进程-服务器进程属性
1,客户进程和服务器进程的某些属性会受到它们之间所使用的IPC类型的影响。

ps:2011年的最后一天算是第一次结束了这一章了。仅限勉强有个概念的程度。

posted @ 2011-12-31 15:55 Onway 阅读(397) | 评论 (0)编辑 收藏

2011-12-19 第十四章 高级I/O
第一节 引言
1,高级I/O包括:
非阻塞I/O
记录锁
系统V流机制
I/O多路转接
readv和writev函数
存储映像I/O(mmap)

第二节 非阻塞I/O
1,低速系统调用是可能会使进程永远阻塞的一类系统调用。
2,虽然读写磁盘文件会使调用者在短暂时间内阻塞,但并不能将与磁盘I/O有关的系统调用视为“低速”。
3,对于一个给定的描述符有两种方法对其指定非阻塞I/O:
a,如果调用open获得描述符,则可指定O_NONBLOCK标志
b,对于已经打开的一个描述符,则可调用fcntl,由该函数打开O_NONBLOCK文件状态标志。
4,POSIX.1要求,对于一个非阻塞的描述符如果无数据可读,则read返回-1,并且errno被设置为EAGAIN。
5,文件状态标志的更改影响同一文件表项的所有用户,但与通过其他文件表项对同一设备的访问无关。

第三节 记录锁
1,记录锁的功能是:当一个进程正在读或修改文件的某个部分时,它可以阻止其他进程修改同一文件区。
2,fcntl记录锁的基本规则是:多个进程在一个给定的字节上可以有一把共享的读锁,但是在一个给定的字节上只能有一个进程独用一把写锁。进一步而言,如果在一个给定的字节上已经有一把或多把读锁,则不能在该字节上再加写锁;如果一个字节上已经有一把独占性的写锁,则不能对它再加任何的读锁。
3,上面说明的兼容性规则适用于不同进程提出的锁请求,并不使用于单个进程提出的多个锁请求。
4,记录锁的自动继承和释放有三条规则:
a,当一个进程终止时,它锁建立的锁全部释放;任何时候关闭一个描述符时,该进程通过这一描述可以引用的文件上的任何一把锁都被释放。
b,由fork产生的子进程不继承父进程锁设置的锁。
c,在执行exec后,新程序可以继承原执行程序的锁。
5,在接近文件尾端加锁或解锁时需要特别小心。
6,建议性锁对非合作进程是不起作用的。
7,linux中,使用强制性锁需要在文件系统挂载的时候mount命令加上_omand选项以打开该机制。
8,对于一个特定文件打开其设置组ID位,并关闭其组执行位,则对该文件开始了强制性锁机制。

第四节 STREAMS(看不懂啊!)
1,STREAMS是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法。
2,流在用户进程和设备驱动程序之间提供了一条全双工通路。流无需和实际硬件设备直接会话,流也可以用来构造伪设备驱动程序。
3,在Linux中,STREAMS子系统是可用的,但是用户必须自行将该子系统安装到系统中,通常它默认为不包括在系统中。

第五节 I/O多路转接
1,I/O多路转接:先构造一张有关描述符的列表,然后调用一个函数,直到这些描述符中的一个已准备好进行I/O操作时,该函数才返回。在返回时,它告诉进程哪些进程已经好可以进行I/O。这些函数即select和pselect函数。
2,poll函数类似于select,但是其程序员接口则有所不同。
3,虽然poll函数可用于任何类型的文件描述符,但它起源于系统V,所以poll与STREAMS系统紧紧相关。
4,poll和select函数在被信号中断后都不会被重启动,即使启用了SA_RESTART函数。

第六节 异步I/O
1,select和poll对任意描述符都能工作。
2,在系统V派生的系统中,异步I/O只对STREAMS设备和STREAMS管道起作用。在BSD派生的系统中,异步I/O只对终端和网络起作用。

第七节 readv和writev函数
1,readv和writev函数用于在一次函数调用中读写多个非连续缓冲区。

第八节 readn和writen函数
1,readn和writen函数并非任何标准的组成部分。
2,注意read,write函数返回值小于要求值的情况。

第九节 存储映射I/O
1,存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射。
2,将一个普通文件复制到另一个普通文件中时,存储映射I/O比较快。但是有一些限制,例如,不能用其在某些设备(如网络设备或终端设备)之间进行复制,并且在对被复制的文件进行映射后,也要注意该文件的长度是否改变。

第十节 小结


PS:这章在STREAMS一节纠结了好久还是没看懂,其他的也只是基本看了个概念。期间也跳到第十五章看了一下前几节。

posted @ 2011-12-27 10:17 Onway 阅读(352) | 评论 (0)编辑 收藏

仅列出标题
共6页: 1 2 3 4 5 6