当前位置:首页 > Linux常见问题及其解决方案
root忘记密码 ............................................................................................................................................................ 1 找不到终端 ............................................................................................................................................................... 1 Grub加密 .................................................................................................................................................................. 1 虚拟机访问Windows ............................................................................................................................................... 1 关闭启动服务 ........................................................................................................................................................... 1 设置虚拟机上网 ....................................................................................................................................................... 1 初始化root口令 ....................................................................................................................................................... 1 smba服务 .................................................................................................................................................................. 1 文件锁 ....................................................................................................................................................................... 1
root忘记密码
Linux启动时,出现kernel,输入“e”? s ? b ? passwd root 找不到终端
ALT F2 -> gnome-terminal Grub加密
(1)/sbin/grub-md5-crypt 产生一个MD5串;如”abc”
(2)修改/etc/grub.conf加入passwd在splashimage和title之间 password—md5 abc 虚拟机访问Windows
(1) VM,设置上网方式为“NAT”
(2) Windows下设置本地连接—>“高级”?”允许vmware”并选择vmwarenet1 (3) Windows下共享一个文件夹
(4) Linux下选择桌面—>”管理”?“网络”,激活eth0网卡,如果没有eth0,则新建
(5) Linux下选择位置?连接服务器?选择Windows共享,输入共享名称即可。如果报错,则 step1. service smb start
step2. smbpasswd –a xiaozhang
step3. smbclient –L \\\\192.168.0.1\\共享名称 -U xiaozhang 关闭启动服务
查看某个服务何时启动 chkconfig –list
关掉某个服务 chkconfig --level 12345 sendmail off 设置虚拟机上网
(1) Windows下设置本地连接—>“高级”?”允许vmware”并选择vmwarenet1 (2) Linux下选择桌面—>”管理”?“网络”,激活eth0网卡,如果没有eth0,则新建 初始化root口令 sudo passwd root smba服务
step1. service smb start
step2. smbpasswd –a xiaozhang
step3. smbclient –L \\\\192.168.0.1\\共享名称 -U xiaozhang 文件锁
文件加入写入锁,其他进程则不能加写入锁,因而,写入锁是一种互斥锁。但进程加入写入锁给一个文件tmp,而这个文件tmp可以被vi编辑。如果vi在该进程之前修改了tmp,则该进程放弃对tmp文件的修改。
fopen 系列是级别较高的I/O,也就是说fwrite是通过调用write实现的,读写时使用缓冲;而open系列相对低层,更接近操作系统,读写时没有缓冲。由于能更多地与操作系统打交道,open系列可以访问更改一些fopen系列无法访问的信息,如查看文件的读写权限。这些额外的功能通常因系统而异
总的来说,为了使程序获得更好的可移植性,未到非得使用一些fopen系列无法实现的功能的情况下,fopen系列是首选。
linux文件锁是用fcntl函数,可是fcntl函数控制的是open close read write等POSIX系统调用函数,而不是C语言的fopen fread fwrite fclose标准文件读写函,因此要使用fcntl系统调用控制,下面网址是一个使用fcntl控制write系统调用的例子: http://hi.http://www.china-audit.com//mgqw/blog/item/1f1e57398fd2bbfb3b87cecc.html
如果直接将上面例子代码中的write函数改成fwrite函数,就算程序中用fcntl锁锁住文件,结果还是是哪个程序先完成就写哪个程序,根本不管有没有上锁,先完成的程序永远是先写入文件;而就算是先开始运行最后完成的程序,也是后写入文件.
fwrite函数由于采用了缓冲机制,必须要锁在循环写数据的外面,将其所有循环写入看成是一次原子操作,才能锁住文件,下面是示例文件,上面链接中的代码相比,就是改将加锁的位置从循环里面拉到循环外面:
int main() { int i,len; int fd; FILE *fp; char buf[1024]; if( (fp=fopen(\ { if( (fp=fopen(\ { printf(\ return -1; } } fd = fileno( fp ); fcntl(fd, F_SETLKW, file_lock(F_WRLCK, SEEK_SET)); for( i=0; i<10; i++ ) { printf(\ sprintf(buf, \ fprintf( fp, \ usleep(500000); } fcntl(fd, F_SETLK, file_lock(F_UNLCK, SEEK_SET)); fclose(fp); return 0; } int main() { int i,len; int fd; FILE *fp; char buf[1024]; if( (fp=fopen(\ { if( (fp=fopen(\ { printf(\ return -1; } } fd = fileno( fp ); fcntl(fd, F_SETLKW, file_lock(F_WRLCK, SEEK_SET)); for( i=0; i<20; i++ ) { printf(\ sprintf(buf, \ fprintf( fp, \ usleep(500000); } fcntl(fd, F_SETLK, file_lock(F_UNLCK, SEEK_SET)); fclose(fp); return 0; }
共分享92篇相关文档