精华内容
下载资源
问答
  • Java加载JNI的动态库,有两种方式:public static void load(Stringfilename),从作为动态库的本地文件系统中以指定的文件名加载代码文件。文件名参数必须是完整的路径名。调用System.load(name)实际上等效于调用:...

    Java加载JNI的动态库,有两种方式:

    public static void load(String filename),从作为动态库的本地文件系统中以指定的文件名加载代码文件。文件名参数必须是完整的路径名。调用 System.load(name) 实际上等效于调用:Runtime.getRuntime().load(name)。

    public static void loadLibrary(String libname),加载由 libname 参数指定的系统库。将库名映射到实际系统库的方法取决于系统。调用 System.loadLibrary(name) 实际上等效于调用:Runtime.getRuntime().loadLibrary(name)。

    jni加载classpath中的动态链接库

    1// 系统自己会判断扩展名是dll还是so

    2System.loadLibrary("test");

    jni加载jar包中的动态链接库

    部署应用的时候要加载jar包中的动态链接库文件,可以将本地库拷贝到环境变量path指定的路径中。一般在windows平台上直接copy到

    “C:\WINDOWS\System32”目录下了事,但这样需要用户做额外操作,有时候当前系统用户也没有权限拷贝库文件到指定目录。

    有人可能会想到,在Java代码中利用System.setProPerty设置lib path,指向动态库文件所在路径。不过此法不可行,因为一旦Java虚拟机启动以后,lib path就是只读的,就不能再设置进去值了。

    这个问题可以这样解决:

    把dll放在classpath中,用Class.getResource(str).openStream()读取这个dll,

    拷贝到classpath中,用System.loadLibrary(name)加载;

    如果没有权限拷贝到指定目录,也可以拷贝到temp目录中,用System.load(path)加载。

    1. 拷贝到classpath中,用System.loadLibrary(name)加载

    1static {

    2InputStream in =null;

    3FileOutputStream out =null;

    4try {

    5String libpath = System.getProperty("java.library.path");

    6if (libpath ==null || libpath.length() ==0)

    7throw new RuntimeException("java.library.path is null");

    8String path =null;

    9String pathSeparator = System.getProperty("path.separator");

    10StringTokenizer st =new StringTokenizer(libpath, pathSeparator);

    11if (st.hasMoreElements())

    12path = st.nextToken();

    13else

    14throw new RuntimeException("can not split library path : " + libpath);

    15in = Foo.class.getResource("foo.dll").openStream();

    16File fooDll =new File(new File(path),"foo.dll");

    17out =new FileOutputStream(fooDll);

    18byte[] buffer =new byte[2048];

    19int len;

    20while ((len = in.read(buffer)) != -1)

    21out.write(buffer,0, len);

    22out.close();

    23fooDll.deleteOnExit();

    24System.loadLibrary("foo");

    25}catch (Throwable e) {

    26e.printStackTrace();

    27}finally {

    28// 流的判空和关闭

    29}

    30}

    2. 拷贝到temp目录中,用System.load(path)加载

    1static {

    2InputStream in =null;

    3FileOutputStream out =null;

    4try {

    5in = Foo.class.getResource("/foo.dll").openStream();

    6File temporaryDll = File.createTempFile("foo",".dll");

    7out =new FileOutputStream(temporaryDll);

    8byte[] buffer =new byte[2048];

    9int len;

    10while ((len = in.read(buffer)) != -1)

    11out.write(buffer,0, len);

    12out.close();

    13temporaryDll.deleteOnExit();

    14System.load(temporaryDll.getPath());

    15}catch (Throwable e) {

    16e.printStackTrace();

    17}finally {

    18// 流的判空和关闭

    19}

    20}

    为什么上面通过getResource取得了URL不直接去加载呢?因为如果把dll和class一起打成jar包,ClassLoader还是不能加载本地库,因为System.load(path)需要的是dll的完整路径,但并不支持jar协议。ClassLoader中用new File(name),当然会找不到文件。

    1URL url = Foo.class.getResource("/java/lang/String.class");

    2System.out.println(url);

    3System.out.println(url.toExternalForm());

    4System.out.println(url.getFile());

    以上代码输出结果如下:

    jar:file:/E:/Java/jdk1.6.0_31/jre/lib/rt.jar!/java/lang/String.class

    jar:file:/E:/Java/jdk1.6.0_31/jre/lib/rt.jar!/java/lang/String.class

    file:/E:/Java/jdk1.6.0_31/jre/lib/rt.jar!/java/lang/String.class

    jni卸载动态库文件

    事实证明以上调用deleteOnExit()方法并不能在系统退出后删除动态库文件,由于程序占用而导致无法删除,所以要在程序退出时卸载动态库文件,这个样在程序退出时就可以删除动态临时创建的动态库文件了。我们在程序中加个hook,让程序退出时卸载动态链接库:

    1Runtime.getRuntime().addShutdownHook(new Thread() {

    2public void run() {

    3// unloadAllNativeLibs();

    4unloadNativeLibs(temporaryDll.getName());

    5}

    6});

    那么如何在程序推出时卸载动态库文件呢?可以通过反射调用私有属性和私有方法来卸载:

    1public static synchronized void unloadAllNativeLibs() {

    2try {

    3ClassLoader classLoader = Foo.class.getClassLoader();

    4Field field = ClassLoader.class.getDeclaredField("nativeLibraries");

    5field.setAccessible(true);

    6Vector libs = (Vector) field.get(classLoader);

    7Iterator it = libs.iterator();

    8while (it.hasNext()) {

    9Object object = it.next();

    10Method finalize = object.getClass().getDeclaredMethod("finalize");

    11finalize.setAccessible(true);

    12finalize.invoke(object);

    13}

    14}catch (Throwable th) {

    15th.printStackTrace();

    16}

    17}

    18

    19public static synchronized void unloadNativeLibs(String libName) {

    20try {

    21ClassLoader classLoader = Foo.class.getClassLoader();

    22Field field = ClassLoader.class.getDeclaredField("nativeLibraries");

    23field.setAccessible(true);

    24Vector libs = (Vector) field.get(classLoader);

    25Iterator it = libs.iterator();

    26while (it.hasNext()) {

    27Object object = it.next();

    28Field[] fs = object.getClass().getDeclaredFields();

    29for (int k =0; k < fs.length; k++) {

    30if (fs[k].getName().equals("name")) {

    31fs[k].setAccessible(true);

    32String dllPath = fs[k].get(object).toString();

    33if (dllPath.endsWith(libName)) {

    34Method finalize = object.getClass().getDeclaredMethod("finalize");

    35finalize.setAccessible(true);

    36finalize.invoke(object);

    37}

    38}

    39}

    40}

    41}catch (Throwable th) {

    42th.printStackTrace();

    43}

    44}

    【注】unloadNativeLibs(String libName)这个 libName 不是那个“foo.dll”,而是一个“foo”+Long类型的随机数+“.dll”。

    展开全文
  • 一、基本型1.分步删除。如果你删除的是一个文件夹,可以尝试先将文件夹中的文件删除,然后再删除该文件夹。还有一种办法是在该文件夹下面新建一个文件,再对文件夹执行删除操作。...这种情况常常出现在我们卸载软...

    一、基本型

    1.分步删除。如果你删除的是一个文件夹,可以尝试先将文件夹中的文件删除,然后再删除该文件夹。还有一种办法是在该文件夹下面新建一个文件,再对文件夹执行删除操作。

    2.改名删除。将不能删除的文件或文件夹改名后再删除。

    3.结束进程再删除。当你在删除文件时,如果系统提示“文件正在使用”,首先检查一下是否没有退出与被删文件相关的程序,再看看系统进程中是否还有相关进程保留。这种情况常常出现在我们卸载软件后删除软件残留在系统中文件的时候。

    4.重启后再删除。

    5.换个系统再删除。使用多系统的朋友可以切换到另外一个系统中执行删除操作,这招比较有效。单系统的朋友则可以在DOS下使用RD(删除目录)或delete命令(删除文件)或者进入到安全模式底下进行删除操作。

    6.结束掉Explorer进程后再删除。按下Ctrl+Alt+Del键打开任务管理器,切换到“进程”选项卡,结束掉Explorer进程,这时候桌面会丢失,不用着急,运行“文件→新任务”,输入“cmd”后回车打开命令行窗口,进入待删文件所在目 录,用RD或delete命令删除即可。删除完毕后再次运行“文件→新任务”命令,输入“explorer”后回车,桌面又回来了。

    7.关闭预览功能再删除。如果你在资源管理器中使用了视频、图片的预览功能,那么在删除此类文件时常常不成功,解决的办法是关闭该功能:Windows XP用户在“开始→运行”中输入“regsvr32 /u shmedia.dll”即可,Windows 2000用户则在资源管理器中的空白处单击鼠标右键,选择“自定义文件夹”选项,会出现自定义文件夹向导,进入到“请选择模板”窗口后,选择其中的“简易”便可以禁止视频预览了。

    二、移花接木型

    1.覆盖文件再删除。在硬盘的另外区域新建一个和待删文件同名的文件,然后剪切并覆盖待删文件,最后再删除该文件。

    2.请常用软件“兼职”删除。我们可以使用Winrar、FlashFXP、Nero、ACDSee来删除顽固文件,这种方法往往有奇效。使用方法非常简单,以FlashFXP为例,只需在本地目录中浏览到待删文件,对其执行删除操作即可。

    注意:使用Winrar来删除文件的方法跟其它软件不同,步骤如下:右键单击待删除文件或者文件夹,选择“添加到档案文件”菜单,在谈出窗口中勾选“存档后删除源文件”,单击“确定”,这样Winrar在创建压缩文件的同时,也会帮我们删除顽固的文件,我们只 需要将创建的压缩文件删除即可。

    3.在别的机器上删除。如果你处于局域网中,可以尝试将待删文件所在的文件夹的属性设置为共享,并赋予读写权限,然后通过网上邻居或在所在的局域网内的其它的电脑上打开文件夹,执行删除操作。另外如果你电脑中安装了FTP服务器,我们还可以试试从FTP登录 本机,然后删除待删文件。

    一、 资源管理器的右键菜单 1、删除右键菜单中的多余项 大家都知道,许多软件在安装时,首先要把自身的安装文件解压缩到一个临时目录(一般为 Windows文件夹下的Temp目录),如WinZip等工具,然后再进行安装。如果软件设计有疏忽或者系统有问题,当安装结束后,这些临时文件就会变得并不“临时”,成为硬盘里的一堆垃圾,往往它们是以*.tmp的面孔出现的;在软件的运行过程中通常会产生一些临时交换文件,比如一些程序工作时产生的形如*.old、*.bak这样的备份文件,杀毒软件或系统软件检查硬盘时生成的备份文件等;而软件被卸载后,也会在硬盘中留下一些文件夹、*.dll文件、*.hlp文件和注册表键值以及形形色色不知名的小东西,成为货真价实的垃圾。事实上我们正常卸载某个应用程序后,右键菜单中也会遗留下一些不再需要的项目,同样需要将其删除。这些遗留项目一般都存放在“HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers”;如果是只对文件夹有效的项目,则存放在“HKEY_CLASSES_ROOT\Directory\shell”和“HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers”,有时在“HKEY_CLASSES_ROOT\Folder\shell”和“HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers”也有,找到后将他们删除即可。 另外,利用注册表的查找功能也可以去掉卸载后的遗留文件,在注册表中查找与软件有关的键值,找到并删除,可能有多个,这时你可以用F3快捷键继续查找,直到所有的项目全被删除。 (提示:在进行任何注册表删除操作前,都要在注册表编辑器中对要删除的项进行导出操作。)

    2.删除“新建”子菜单中的选项 在单击鼠标右键所弹出的菜单中选择“新建”子菜单,就会显示出系统中已安装应用程序所对应的新建文件。随着系统中的应用程序越来越多,“新建”子菜单中的内容也会随之增多。可是在计算机的日常使用中,用户并不需要创建这么多类型的文件。其实我们完全可以通过修改注册表来删除“新建”菜单中的选项,而且操作并不复杂,只需启动注册表编辑器,将[HKEY_CLASSES_ROOT\.***](“.***”是要删除项目的文件扩展名)下的“ShellNew”项删除,然后退出注册表编辑器并重新启动计算机即可。 我们以删除“新建”子菜单中的“WinRAR压缩文件”项为例;首先要找到[HKEY_LOCAL_MACHNE\SOFTWARE\Classes\.rar],将其下的“ShellNew”项删除,回到桌面,按下F5键刷新,接着再右击桌面空白处,选择“新建”,这时你就会发现原有的“WinRAR压缩文件”已经消失了。 3、删除“打开方式”子菜单中的无用项 右击某个文件,有可能在右键菜单的“打开方式”子菜单中有些我们并不需要的程序,“.TXT”文件的“打开方式”中有三个程序,其实有些根本不会用到,这时只要到注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts]和[HKEY_CLASSES_ROOT\SystemFileAssociations]中找到相应扩展名项,然后在“OpenWithList”子项中删除不需要的键值或项即可。 我们以删除文本文件右键菜单“打开方式”子菜单中的无用项为例;进入[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]删除右侧窗格的相应键值,再进入[HKEY_CLASSES_ROOT\SystemFileAssociations\text\OpenWithList],删除相应子项即可。

    二、 让IE轻装上阵 随着网络技术的不断发展,通过网络沟通和交流已成为许多人日常生活的一部分,然而IE中的不和谐因素总是令人伤透了脑筋。窗口标题、默认首页被改得面目全非;右键菜单、工具栏、工具条被强行加入各种各样乱七八糟的内容等等,其实上面的这些情况,可以用3721上网助手全部解决。如果您的系统中没有安装的话,可在浏览器中打开assistant.3721.com,将上网助手下载并安装到系统中,安装完毕后,建议重新启动一下系统再进行下一步操作。 1、清理IE右键菜单 在浏览器打开的网页窗口中,右击鼠标时,会弹出快捷菜单,从中,我们可以快速地进行诸如文件下载、图片保存等很多项操作。但是,现在很多程序只要安装到系统中,便自作主张地在IE右键菜单中添加相关的项目。长此以往,IE右键菜单不仅会变得很臃肿,而且会使弹出右键菜单的时间越来越长,影响系统的运行。因此,清理不需要的右键菜单项,十分有必要。 首先启动IE浏览器,然后单击地址栏下面的“上网助手→修复IE→恢复IE外观”,即可打开窗口:要想清理IE右键菜单,我们只要窗口中选择“清理IE右键菜单”选项卡,即可打开新的窗口,中间的列表显示了所有当前IE右键菜单中的项目,如果想清除哪项,只要用鼠标选择它,再单击“立即清理”按钮即可。 2、清理IE工具栏按钮 清理IE工具栏按钮的方法与此类似。点击“清理IE工具栏按钮”,进入功能页面: 中间的列表显示了IE工具栏上可以清除的按钮。只需要点击每项前面的复选框,然后点击“立即清除”,即可去掉被选中的工具栏按钮。 重新打开一个IE窗口,可以看到被删除的工具栏按钮已经消失了。 3、清理IE工具条 由于IE的灵活性,它的工具条也是可以随意添加的,在很多的工具条都想放到IE上的情况下,IE越发变得拥挤不堪了。 另外,如果加载了超过3个以上的工具条,IE的启动速度就会有所降低。这是因为IE在启动时,会对需要加载的工具条进行初始化,完成一些设置。当只有1、2个工具条时,我们不会有所感觉。而超过3个以上,速度就会明显降低。另外如果工具条的内容还需要从互联网上即时下载下来,那么这个延迟就更明显。所以建议大家最多只加载2个工具条。 当然,IE也提供了不加载工具条的功能。点击菜单“查看→工具栏”,可以看到IE中已经安装的工具条,其中的“标准按钮”、“地址栏”是最基本的,不应该删除。其他的像“链接”等,没有多少用处,可以不用加载。方法是点击该项,其前面的“勾选”标记消失,而该项代表的工具条,也不再在IE中显示了。不过很显然,由于每去掉一个工具条,就需要刷新一次IE,因此这种操作比较麻烦。

    三、 删除无效的快捷方式 大家都知道,不管是Windows 9x/Me还是加了SP1补丁的Windows XP,用得时间长了,系统中的各种垃圾文件和垃圾信息就会越来越多。而在Windows中还有一种不太为人所知的垃圾,那就是失效的快捷方式,比如已经修改了某个软件(或文件)所在的文件夹,但其快捷方式依然指向原来的位置,或者已经卸载了软件或删除了文件,但相应快捷方式却仍留在“开始→程序”、“开始→文档”、“C:\Progeam Files”等处,Windows用得越久,这些垃圾快捷方式越多,Windows也就会变得越来越臃肿,运行效率当然也越来越低了。这时候,你可以使用Windows优化大师进行清理,或使用OrphansRemover这款免费软件(下载地址:http://www.digiarch.org/download/orphansremover.zip)来查找并清除它们。 下载并安装后,运行OrphansRemover,在软件窗口上方的“Select folders to shortcut orphans:”和“lnclude shortcuts with broken links to:”项下选择要扫描的文件夹及连接到移动存储器、光盘等上的无效快捷方式。而“User defined search folder”文本框中则允许你指定文件夹。最后单击窗口下方的“Start scan”按钮开始扫描,完成扫描后单击“Delete orphans”按钮删除无效快捷方式即可。 另外,OrphansRemover这款软件还支持命令行参数,比如“ D:\program files\orphansremover\ orphansremover.exe recent startmenu-silent”可以清理“文档”、“开始”菜单中的无效快捷方式,其中“recent”为“文档”、“startmenu”为“开始”菜单,而“-silent”表示后台安静执行。其它参数请参考OrphansRemover安装文件夹manual.html文件的相关说明。

    四、清理无用字体 1、删除无用字体 在文档处理或美术设计的过程中,为了达到美观或其它的要求,我们可能需要安装并使用一些非系统自带的各种特殊的字体。久而久之,系统里究竟安装了多少种字体恐怕连自己也不太清楚了。实际上字体超过500种时,就会出现问题,比如:字体从应用程序的字体列表中消失以及Windows的启动速度大幅下降。显而易见,过多的字体不仅占用较多的系统资源,还会影响到Windows的整体表现。为了提升系统性能,建议您最好将用不到或者不常用的字体删除。 要想删除无用或不常用的字体,就要知道哪些字体不能删除。首先宋体不能删除,它是系统默认的中文字体;屏幕字体文件(扩展名为.FON)不能随意删除,否则一些对话框中的文字会变成乱码,甚至会导致Windows 98/Me无法启动;“.SYS”为系统字体,在系统提示信息和图标描述性文字中要用到这些字体,删除后可能会导致系统崩溃;还有一些符号,如Marlett、Windings等字体,也不能随意删除。而且带有这些文字的字体不要删除:Arial、Courier、MS Serif、Tahoma、Verdana、Comic Sans、MS Sans Serif、Symbol、Time New Roman、Impact、Lucida Console、Marlett、Modem、Samall Fonts、Webdings、Windings、Roman、MS-DOS CP437、script、SIMHEI、SimSun&NSimSun、Palatino、Linotype、Microsoft、MS。 另外,Windows中安装了不少相似字体,在许多情况下是不必要而且几乎不可能全都用到的,因此可以将相似的字体找出来,保留几个最常用的,其他的都可以利用下面的方法移走。 为了避免错删字体而导致的系统故障,值得推荐的方法是把字体移出“FONTS”文件夹,集中保存在另外的目录,比如“D:\fontsback”中。同时要为该文件创建一个快捷方式,并将其放在“开始”菜单或“快速启动”栏上。当使用这些字体时,只需打开该文件夹,然后双击某个字体让其显示在预览窗口,只要预览窗口一打开,字体就装载至内存,而且在任何应用程序的“字体”菜单中都能看到。用户可以使用这种方式载入多种字体,等使用完这些字体后,只要关闭预览窗口即可。

    展开全文
  • 一般来说,文件系统必须挂载在Linux系统...如果没有文件系统,你将无法在Linux系统上使用任何磁盘,因为文件系统包含了文件和目录的信息。完成上述步骤后,就可以使用mount命令将分区(目录)挂载到挂载点。挂载程序和...

    一般来说,文件系统必须挂载在Linux系统上才能访问其内容。当在服务器系统中添加新的硬盘时,你可能需要使用fdisk命令或parted命令来创建分区。一旦你的服务器创建了分区,你必须使用磁盘空间上的mkfs命令创建一个文件系统。

    如果没有文件系统,你将无法在Linux系统上使用任何磁盘,因为文件系统包含了文件和目录的信息。

    完成上述步骤后,就可以使用mount命令将分区(目录)挂载到挂载点。

    挂载程序和umount程序在"/etc/mtab "文件中维护着当前挂载的文件系统列表。

    一、什么是mount命令?

    mount命令用于将文件系统和可移动设备(例如CDRM,DVD,USB闪存驱动器)附加(安装)到目录树中的特定安装点。

    系统引导时,“ / etc / fstab”文件中所有提及的文件系统将自动挂载。

    挂载文件系统的一般语法

    mount -[options] [device_name] [mount_directory]

    mount [-t file_system_type] [-o mount_options] [device_name] [mount_point]

    以下是挂载文件系统时可以使用的一些选项。

    defaults:您可能已经看到,大多数已安装的文件系统在“/etc/fstab”文件中都有默认选项。此默认选项在装入的文件系统中使用以下选项,例如rw,suid,dev,exec,auto,nouser,async和relaime。

    ro:以只读方式挂载文件系统。

    rw:以读写方式挂载文件系统。

    async:文件系统的所有I / O应该异步完成(默认使用)。

    noauto:系统启动时,不会自动挂载在/ etc / fstab文件中使用noauto选项设置的文件系统。

    noexec:禁止在已加载的文件系统上执行任何二进制文件。

    nosuid:忽略文件系统中的set-user-identifier(SUID)或set-group-identifier(SGID)位。

    nodev:不要解释字符或阻止文件系统上的特殊设备。

    _netdev:这仅在启用网络后才允许系统挂载文件系统。

    remount:这将重新安装一个已经挂载的文件系统。这通常用于合并您在文件系统上所做的更改。

    二、什么是umount命令?

    umount命令用于在Linux和其他类似Unix的操作系统上手动卸载(分离)文件系统。

    系统关闭时,所有已挂载的文件系统都会自动卸载。

    卸载文件系统并不总是成功。最常见的问题是文件系统正忙,某些进程当前正在使用它。

    如果是这样,则应终止该过程以卸载文件系统。

    三、如何列出已挂载的文件系统

    当您运行不带任何参数的mount命令时,该命令将显示已装载的文件系统,包括虚拟文件系统,例如cgroup,tmpfs,devpts,debugfs等。

    它用一行显示设备名称,文件系统类型,安装点名称和安装选项。

    330db5b035f4b4de174a9b0095bc68ff.png

    将-t选项与mount命令一起使用可仅显示指定的文件系统类型。

    例如,要仅打印“ xfs”分区,请使用以下命令。

    c0146c4eb4ac9c45497283af6d64fa5c.png

    四、如何挂载文件系统

    在大多数Linux操作系统上已经可以使用mount命令。确定安装点后,继续安装文件系统。为此,请使用以下格式。

    mount -[options] [device_name] [mount_directory]

    例如,要将“/dev/sdb1”文件系统挂载到“/backup”目录,请使用以下命令。

    # mount /dev/sdb1 /backup

    注意,在挂载具有通用文件系统(例如ext4或xfs)的设备时,无需指定文件系统类型,因为mount命令会自动检测文件系统类型。

    例如,在基于RHEL 7/8的系统上运行mount命令时,它将使用xfs挂载文件系统。同时,它在基于Ubuntu的系统上使用ext4挂载文件系统。

    当您要使用特定文件系统挂载设备时,可以通过mount命令使用“ -t”选项指定文件系统类型。

    另外,如果要使用多个安装选项来安装文件系统,请在mount命令中使用“-o”选项。

    五、如何重新挂载文件系统

    这通常用于合并您在文件系统上所做的更改,而不会中断当前的运行时进程。

    例如,您可以使用以下命令在“/app”文件系统上启用“ acl”选项。

    # mount -o remount,acl /app

    如何在系统启动时挂载文件系统

    如果要在系统启动时挂载任何文件系统,则必须在“ / etc / fstab”文件中添加特定的文件系统信息。

    请参阅以下文章以了解/ etc / fstab文件。

    Linux系统在引导时会自动挂载“ / etc / fstab”文件中包含的文件系统。

    如何安装USB驱动器

    大多数现代Linux发行版都自动安装USB驱动器,您可以使用df命令获得详细信息,如下所示。但是有时,如果系统无法识别USB驱动器,则可能需要按照以下步骤手动安装它们。

    c0146c4eb4ac9c45497283af6d64fa5c.png

    为此,您需要标识文件系统类型。这可以在fdisk命令的帮助下找到。

    # fdisk -l

    创建一个目录以安装USB驱动器,建议您创建以下目录。

    # mkdir /media/usb

    假设USB驱动器使用/ dev / sdb2设备,则可以使用bleow命令安装它。

    # mount /dev/sdb2 /media/usb

    六、如何挂载CD / DVD-ROM

    插入DVD后,运行blkid命令以找到正确的CD/DVD块设备。

    #blkid

    创建一个目录来安装CD / DVD驱动器,我建议您创建以下目录。

    # mkdir /media/dvdrom

    最终如下所示安装CD/DVD-ROM。

    # mount /dev/sr0 /media/dvdrom

    或者

    # mount /dev/cdrom /media/dvdrom

    mount: /media/dvdrom: WARNING: device write-protected, mounted read-only.

    七、如何在Linux中挂载ISO映像

    您可以使用循环设备挂载ISO文件。循环设备是使文件可作为块设备访问的伪设备。

    创建一个安装点。

    # mkdir /media/iso

    最后,使用以下命令挂载ISO文件。确保将“/path/to/image.iso”替换为ISO文件的路径。

    # mount /path/to/image.iso /media/iso -o loop

    八、如何挂载NFS共享

    确保您已经在计算机上安装了NFS客户端软件包。我假设您已经安装了NFS并启动了必要的服务。

    运行以下命令,为您检查可用共享。

    # showmount -e 192.168.1.101

    Export list for 192.168.0.100:

    /test_nfsshare 192.168.0.101

    创建一个挂载点以挂载nfs共享。

    # mkdir /mnt/nfs

    您可以运行以下命令在系统上临时挂载nfs共享。

    # mount -t nfs 192.168.1.101:/test_nfsshare /mnt/nfs

    通常,您不会将NFS共享用作临时挂载,因此请将以下行添加到“/etc/fstab”文件中,以便在引导时加载nfs共享(用于永久挂载)。

    # vi /etc/fstab

    192.168.1.101:/test_nfsshare /mnt/nfs nfs defaults 0 0

    Remote_Server_IP – 192.168.1.101

    NFS共享名称– / test_nfsshare

    本地挂载点– / mnt / nfs

    九、如何卸载文件系统

    您无需使用任何参数即可卸载(删除)文件系统。要删除文件系统,请在umount命令之后使用安装点名称或设备名称。

    # umount /backup

    umount: /backup: target is busy.

    (In some cases useful info about processes that use

    the device is found by lsof(8) or fuser(1))

    如果文件系统被任何进程使用,则将无法卸载(分离)文件系统。这是卸载文件系统时最常见的原因。您可以使用fuser命令或lsof命令来查找正在访问文件系统的进程。

    # fuser -cu /backup

    或者

    # lsof | grep /backup

    如果有任何进程使用文件系统,则可以使用fuser命令杀死安装点中的所有进程。

    # fuser -ck /backup

    最后,您可以卸载文件系统。

    #umount /备份

    十、强制卸载文件系统

    我不建议使用此选项,因为它可能会损坏文件系统中的数据。如果没有其他选择,请使用此选项。

    十一、如何卸载过时的NFS装载

    您可以通过以下步骤卸载在网络断开连接后无法通过“设备繁忙”卸载的过时的NFS装载。

    逐一运行以下命令,我可以确定其中一个命令可以卸载过时的nfs共享。

    #mount -t nfs -o remount / nfs-share

    #umount / nfs-share

    #umount -f / nfs-share

    #umount -l / nfs-share

    #umount -lf / nfs-share

    展开全文
  • 我正在为其中一个应用程序编写一个NSIS...NSIS卸载程序不会删除文件/文件夹该应用程序创建的服务被删除,注册表项也是如此,最简单的部分,文件本身,我无法通过卸载程序删除它们!#Includes!include "x64.nsh"#Def...

    我正在为其中一个应用程序编写一个NSIS安装程序,这个应用程序在内部使用,安装过程正常,没有任何问题会创建所有REG密钥,并且App使用的文件夹和服务也是如此。出于某种原因,我无法理解,卸载过程不起作用。NSIS卸载程序不会删除文件/文件夹

    该应用程序创建的服务被删除,注册表项也是如此,最简单的部分,文件本身,我无法通过卸载程序删除它们!

    #Includes

    !include "x64.nsh"

    #Defines and Installer Properties

    Outfile "ESTvnc Installer.exe"

    Name ESTvnc

    Icon "${NSISDIR}\contrib\graphics\icons\VNCON.ico"

    #Detect OS Version

    Function .onInit

    StrCpy $instdir $PROGRAMFILES

    ${If} ${RunningX64}

    StrCpy $instdir $PROGRAMFILES32

    ${EndIf}

    FunctionEnd

    section

    SetShellVarContext all

    CreateDirectory $instdir\EST\ESTvnc

    setOutPath $instdir\EST\ESTvnc

    File /r installfiles\*

    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ESTvnc\" \

    "DisplayName" "ESTvnc"

    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ESTvnc"\

    "UninstallString" "$instdir\EST\ESTvnc\uninstaller.exe"

    writeUninstaller $instdir\EST\ESTvnc\uninstaller.exe

    ExecWait '"$instdir\EST\estvnc\estvnc.exe" -install'

    sectionEnd

    section "Uninstall"

    SetShellVarContext all

    SimpleSC::StopService "ESTVNC" 1 30

    pop $0

    SimpleSC::StopService "ESTVNCSR" 1 30

    pop $0

    SimpleSC::RemoveService "ESTVNC"

    SimpleSC::RemoveService "ESTVNCSR"

    RMDir /r "$instdir\EST\ESTvnc"

    Delete $instdir\EST\ESTvnc\uninstaller.exe

    DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ESTvnc"

    sectionEnd

    展开全文
  • 而安装程序失败,出现“不能创建临时文件夹”的提示时,应该如何解决呢?下面就让小编为大家带来win10安装程序不能创建临时文件夹的解决办法。原因分析:在安装程序时不能创建临时文件夹,一般是由于系统中的环境...
  • oracle(创建数据文件)

    2021-05-02 03:06:43
    创建数据文件create tablespace--创建表空间同时创建数据文件create temporary tablespace --创建临时表空间的同时创建临时数据文件alter tablespace...add datafile --向表空间添加数据文件alter tablespace...add ...
  • 如何列出已挂载的文件系统、如何挂载文件系统、如何重新挂载文件系统的说明、如何在系统启动时挂载文件系统的说明、如何安装USB驱动器、如何...ISO映像、如何挂载NFS共享、如何卸载文件系统及如何卸载过时的NFS装载...
  • 磁盘文件挂载与卸载

    2021-05-10 03:58:45
    挂载(mount)何为挂载?挂载指将文件系统与根文件系统的某个现存的目录建立起来的关联关系...此挂载方法味临时挂载,只在当前的shell中有效,退出则清除挂载关联设备文件在/dev/sd*下,a-z指的是磁盘,1-9指的是当前...
  • C++ Linux临时文件读写

    2021-02-10 16:11:06
    #include <iostream> #include <cstdlib> #include <cstring> #include <unistd.h>...int WriteToTempFile(char* buff, ... //创建临时文件 char file_name[] = "/tmp/temp.file.XXXXXX"; int f
  • 操作系统可以随时“卸载”库,并且可能必须从磁盘重新加载二进制文件.如果你删除文件(并且它实际上并没有被进程保持打开),那么你会得到一些非常奇怪的行为……可能是“BUS ERROR”或其他几乎无法解释的...
  • 要完成这一步,通常可以这样:用 mount 命令来进行临时挂载(用完的时候,使用 umount 命令来卸载),或者通过编辑 /etc/fstab 文件之后重启系统来永久性挂载,这样每次开机都会进行挂载。 不带任何选项的 mount ...
  • 一位用户反馈自己在win10系统电脑中卸载金山WPS办公软件时,发现根本无法将wps残留的文件夹删除,在删除的时候提示“操作无法完成,因为其中的文件夹或文件已在另一程序打开 请关闭该文件夹文件重试”,这该怎么办呢...
  • linux系统上mysql数据库无法继续插入和修改数据,输入命令提示“无法为立即文件创建临时文件......”原因解决方法 原因 linux系统文件磁盘被占满,导致数据无法写入和修改。 解决方法 转载:...
  •  // 指代上一次访问过的工作目录~ // 指代当前用户的家目录mkdir // 创建目录mkdir -p // 创建嵌套目录rmdir // 删除空目录 两种路径:绝对路径以/开头,相对路径dir 或者 ./dir等 如何列举文件、查看...
  • 主分区一般用来安装操作系统,扩展分区则多用来储存文件数据。2、硬盘按数据接口不同,大致分为ATA(IDE)和SATA以及SCSI和SAS。现在用的硬盘都是SCSI硬盘,它的优点是资源传输时CPU占用率低,转速快,支...
  • 本博文将给出winXP系统下,出现"安装向导无法创建文件夹’C:\DOCUME~1\ADMIN~1\LOCALS~1\Temp\is-PCCET.tmp 错误82:无法...解决方案:win+R输入%temp%,打开temp文件夹,删除里面的临时文件; 以上是博主在winXP
  • 2.在上图中找到空闲设备:/dev/vdb,进入该设备进行分区:fdisk /dev/vbd ,如下图:进入设备你可以输入m请求帮助,如下图:从上面的帮助命令可以看到,n为添加新分区,输入n,如下图:P表示创建主分区,e表示创建...
  • 磁盘/设备管理设备识别在VM中添加一块硬盘设备查看设备挂载卸载挂载卸载 设备识别 设备接入系统后都是以文件的形式存在。 设备名 对应的文件名 说明 SATA/SAS/USB /dev/sda,/dev/sdb s= SATA,d=DISK,a=第1...
  • Linux创建临时Swap空间

    2021-04-16 11:21:27
    所以应该怎么办呢,其实这个时候可以使用时间换空间的做法,通过临时创建swap交换空间来解决这个问题。很多人可能要问了swap交换空间不可以在刷写镜像的时候就分好吗?这个当然是可以的,只不过受限于emmc(开发板很...
  • mysql的安装与卸载

    2021-01-20 02:56:46
    安装环境:win10系统64位mysql-5.7.23-winx64....2. 5.7.20需要在指定目录下创建my.ini文件(教程已提供),并添加相关配置8版本没有这一步骤。3.用管理员权限打开cmd命令窗口,并进入到解压文件夹所在目录bin路...
  • Oracle11完全卸载方法

    2021-05-01 04:37:13
    (之前因为不知道偶电脑...)一、停止服务在oracle11G以前卸载oracle会存在卸载不干净,导致再次安装失败的情况,在运行services.msc打开服务,停止Oracle的所有服务。二、oracle自带删除oracle11G自带一个卸载批处理...
  • 首先需要知道创建文件时,需要满足两个条件: 1、磁盘上还有空间; 2、inode号还有剩余。 这两个条件可以分别使用"df -h"以及"df -i"查看使用情况 1 2 3 4 5 6 7 8 9 ...
  • Oracle11G卸载教程

    2021-05-08 14:24:57
    用Oracle自带的卸载程序不能从根本上卸载Oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载Oracle呢?那就是直接注册表清除,步骤如下:1、 开始->设置->控制面板->管理工具->服务停止所有...
  • 目录1 安装mysql5.7.201.1 把下载的mysql5.7.20放到目录:/usr/local/1.2 卸载cenos上预装的mysql1.3 解压压缩包1.4创建用户组以及用户1.5创建配置文件保存并退出1.6 初始化数据库并查看初始密码1.7 启动服务,进入...
  • 1.3.2 ext4文件系统【2008年】1.3.3 Reiser文件系统1.3.4 JFS文件系统JFS(Journaled File System,日志化文件系统)1.3.5 XFS文件系统1.4 写时复制文件系统2 操作文件系统2.1 创建分区3 创建文件系统4 文件系统的...
  • 平常将文件夹打包成压缩包或拷贝文件夹到移动硬盘内,临时文件会包含在里面,如果是程序源代码,在 Windows 系统下编译有时候还会受到影响。本篇文章的目的是在移动硬盘插入到电脑的同时,利用 Python 自动化和 ...
  • 挂载和卸载

    2021-01-17 12:39:14
    挂载和卸载卸载1)mount,挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录作为其它文件访问入口的行为。一个目录下不能同时挂载多个设备,生效的只是最后挂载的,当取消挂载时,也是...
  • JDK的安装与卸载

    2021-03-05 13:45:35
    在 Mac 上清除 Oracle Java 高速缓存 ①单击顶部的 Apple 图标 ②单击系统首选项图标以打开 ③单击位于其他部分下的 Java 图标以打开 Java 控制面板 ④在 Java 控制面板中,单击“Internet 临时文件”下的设置 ⑤...
  • Mac Pro下卸载安装Mysql

    2021-01-19 14:51:31
    Mac Pro下卸载安装Mysql 系统版本: OS X 10.11.5 昨天为了修改我的Mysql密码,找了一堆教程在不明所以的情况下各种乱试,终于把我的mysql玩脱了,走上了曲折的mysql重装之路。 一、Mac 关于Mysql的卸载: 如使用...
  • Oracle移动数据文件、系统表空间文件临时表空间文件时间:2017-08-08 来源:1.移动数据文件实验首先使表空间脱机,,复制数据文件到计划的位置,重定义数据文件,使表空间联机,再查看是否已经成功移动数据文件SQL...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,062
精华内容 18,824
关键字:

卸载无法创建临时文件