文件锁linux|linux锁定文件

文件锁linux|linux锁定文件的第1张示图

A. linux 文件锁,系统调用和库函数之间的关系

系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再稍微细分一下的话,整个linux系统从上到下可以是:用户进程->系统调用接口->linux内核子系统->硬件,也就是说Linux内核包括了系统调用接口和内核子系统两部分;或者从下到上可以是:物理硬件->OS内核->OS服务->应用程序,其中操作系统起到“承上启下”的关键作用,向下管理物理硬件,向上为操作系服务和应用程序提供接口,这里的接口就是系统调用了。 一般地,操作系统为了考虑实现的难度和管理的方便,它只提供一少部分的系统调用,这些系统调用一般都是由C和汇编混合编写实现的,其接口用C来定义,而具体的实现则是汇编,这样的好处就是执行效率高,而且,极大的方便了上层调用。库函数:顾名思义是把函数放到库里。是把一些常用到的函数编完放到一个文件里,供别人用。别人用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。(由于版权原因,库函数的源代码一般是不可见的,但在头文件中你可以看到它对外的接口)

B. 如何查看linux空间是否支持文件锁功能

这个可以通过linux版本信息来确定,比如直接 uname -a,通过linux内核版本,来确定当前版本是否支持文件锁功能,比如如果是2.6的内核,基本都是支持文件锁功能的。

C. linux锁定文件

你用chmod 000 文件 试试, 让文件没有任何权限

D. linux下文件已被其他进程锁定怎么解决

ps -ef|egrep 文件名kill -9 那个占用此文件的进程

E. linux下:怎么禁止同一应用程序同时运行

使用文件锁应用开启的时候就创建一个文件锁可以参考文件锁flock/> cat > test26.sh #!/bin/sh #1. 这里需要先确认flock命令是否存在。 if [ -z $(which flock) ]; then echo "flock doesn't exist." exit 1 fi #2. flock中的-e选项表示对该文件加排它锁,-w选项表示如果此时文件正在被加锁,当前的flock命令将等待20秒,如果能锁住该文件,就继续执行,否则退出该命令。 #3. 这里锁定的文件是/var/lock/lockfile1,-c选项表示,如果成功锁定,则指定其后用双引号括起的命令,如果是多个命令,可以用分号分隔。 #4. 可以在两个终端同时启动该脚本,然后观察脚本的输出,以及lockfile1文件的内容。 flock -e -w 20 /var/lock/lockfile1 -c "sleep 10;echo `date` | cat >> /var/lock/lockfile1" if [ $? -ne 0 ]; then echo "Fail." exit 1 else echo "Success." exit 0 fi

F. linux 文件锁为什么只显示lock already present

flock的选项-n等同于–nonblock,表示非阻塞模式。man flock可以看到详细说明: Fail (with an exit code of 1) rather than wait if the lock cannot be immediately acquired. 翻译过来就是,若不能立即获得文件锁,就直接出错返回1而不是继续…

G. linux 文件锁,当一个进程对一个文件上了写锁以后,因异常退出而没有释放锁,其他进程还能读被锁住的区段

可以读取,但是不能写入了:chattr +i /etc/passwd就不能在创建用户了除非解锁:chattr-i /etc/passwd

H. linux shell中的加锁

flock的选项-n等同于–nonblock,表示非阻塞模式。man flock可以看到详细说明:Fail (with an exit code of 1) rather than wait if the lock cannot be immediately acquired.翻译过来就是,若不能立内即获得文件锁,容就直接出错返回1而不是继续等待(默认flock是会继续等待直到获得文件锁)。 3就是fd(即文件描述符)。文件锁只是用于防止多个程序同时访问一个文件的冲突情况。Shell自动分配fd的话,原本就不会使用已被占用的fd,而是自动递增。这里显式指定fd为3(3<>mylockfile),是为了flock有操作的对象。只有unlock后文件才能被其他程序访问,这样就可以保证文件访问不冲突。

I. linux内核对文件的操作本来就要上锁,为什么还需要文件锁

都是描述进程的相关信息 但是描述的东西不一样啊 就是结构体里面的变量成员不一样,两个不一样的结构体 thread_info里面有一个指针指向task_struct的

J. linux下文件锁了!root权限登入但提示权限不够!源文件没有!是不是只有访问权限没有修改权限!

你要获取管理员权限,可能你在安装的时候,默认用户名为root,你没有修改你可以尝试一下方法1、添加用户,首先用adser命令添加一个普通用户,命令如下: #adser tommy //添加一个名为tommy的用户#passwd tommy //修改密码Changing password for user tommy.New UNIX password: //在这里输入新密码Retype new UNIX password: //再次输入新密码passwd: all authentication tokens updated successfully.2、赋予root权限 方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉## Allows people in group wheel to run all commands%wheel ALL=(ALL) ALL然后修改用户,使其属于root组(wheel),命令如下:#usermod -g root tommy修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。方法二: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:## Allow root to run any commands anywhereroot ALL=(ALL) ALLtommy ALL=(ALL) ALL修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:tommy:x:500:500:tommy:/home/tommy:/bin/bash修改后如下tommy:x:0:500:tommy:/home/tommy:/bin/bash保存,用tommy账户登录后,直接获取的就是root帐号的权限。友情提醒:虽然方法三看上去简单方便,但一般不推荐使用,推荐使用方法二。

未经允许不得转载:山九号 » 文件锁linux|linux锁定文件

赞 (0)