Linux中_银河麒麟V4.0.2_使用中_遇到问题_及解决_记录

Linux中_银河麒麟V4.0.2_使用中_遇到问题_及解决_记录

  • 1、银河麒麟 V4.0.2 使用,桌面太大了,必须要使用滑动条往下拉才能看到最底下的任务栏?
  • 2、tcpdump抓包问题:
  • 3、linux 中通过tee把程序日志重定向到log.txt文本文件中,有时候重定向到log文件中的日志会缺失程序中最后面结束前的一部分输出日志,这一部分日志是一定会输出的,但是有时候会缺失,日志文件中没有,终端输出也没有?
  • 4、问题:ubuntu下安装qt5.9.9后,创建新程序然后编译,报错“-1: error: cannot find -lGL”。

1、银河麒麟 V4.0.2 使用,桌面太大了,必须要使用滑动条往下拉才能看到最底下的任务栏?

可以尝试以下解决方案:

	1、调整分辨率:右键点击桌面空白处,选择“显示设置”或者类似的选项(具体名称可能会有所不同)。在显示设置中,尝试调整屏幕分辨率为更低的选项,以适应您的可视范围。

	2、调整显示缩放比例:在系统设置中找到“显示”或“外观”选项,尝试调整显示缩放比例。减小缩放比例可以使整个桌面缩小,适应屏幕。

	3、调整桌面图标大小:在桌面上右键点击,选择“更改桌面背景”或“桌面设置”,找到关于图标大小的选项,尝试减小图标大小以适应屏幕。

	4、使用多个桌面:有些操作系统可以支持多个桌面,您可以尝试将一些不常用的图标或文件放在其他桌面上,以减少主桌面的拥挤感。

	5、安装第三方桌面管理工具:您可以考虑安装一些第三方的桌面管理工具,这些工具往往提供各种自定义选项,可以帮助您更好地管理和布局桌面空间。

2、tcpdump抓包问题:

1、tcpdump: ehth0:You dont have permission to captue on that device(socket: operation not pemitted)
	tcpdump:ehth0:您没有在该设备上进行captue的权限(套接字:操作未完成)

	解决:
		需要sudo 权限来执行。


2、tcpdump: pcapsender: no such file or directory。
	tcpdump:papsender_1_1_1_2023/07/12/_15:05:38.pcap:没有这样的文件或目录

	解决:
		linux文件命名中一般是不能使用 / 跟 : 。
		将 / 换成 - ,: 换成 - 。就好了可以了。

3、linux 中通过tee把程序日志重定向到log.txt文本文件中,有时候重定向到log文件中的日志会缺失程序中最后面结束前的一部分输出日志,这一部分日志是一定会输出的,但是有时候会缺失,日志文件中没有,终端输出也没有?

在Linux中,使用tee命令可以将程序的输出同时输出到终端和文件中。但是,有时候在重定向到文件时,可能会出现缺失最后一部分输出日志的情况。这可能是由于缓冲区的刷新机制导致的。

	默认情况下,标准输出(stdout)是带有缓冲区的,当缓冲区被填满或者遇到换行符时,才会将缓冲区的内容刷新到文件中。因此,如果程序在结束前没有输出换行符或者缓冲区没有填满,那么最后一部分输出可能会被丢失。


可以尝试以下方法来解决缺失日志的问题:
	1. 可以使用std::endl或者std::flush来手动刷新缓冲区。std::endl会输出一个换行符并刷新缓冲区,而std::flush只会刷新缓冲区而不输出换行符。
		刷新操作单独写一行:
			std::cout << std::endl;
			或:
			std::cout.flush();

    	刷新操作跟在日志输出后面:
    		std::cout << "Logging message " << i << std::endl;
    		或:
    		std::cout << "Logging message " << i << std::flush;

    	使用 std::endl 比使用 std::cout.flush() 会更消耗性能,
    	因为 std::endl 不仅会刷新缓冲区,还会在最后插入一个换行符。
    	而 std::cout.flush() 只会刷新缓冲区。
    	因此,如果你只需要刷新缓冲区而不需要额外的换行符,建议使用 std::cout.flush()。

		总结起来,你可以根据需要选择将手动刷新缓冲区的语句单独写在一行,或者与日志输出放在同一行。

	2.强制刷新缓冲区:在程序中适当的位置使用fflush函数来强制刷新输出缓冲区,确保日志被及时写入文件,例如:
	   ```
	   fflush(stdout);
	   ```

	3. 调整程序的输出缓冲大小:使用setvbuf函数来调整程序的输出缓冲大小,可以将缓冲区设置得更小一些,例如:
	   ```
	   setvbuf(stdout, NULL, _IOFBF, 1024); // 将缓冲区大小设置为1024字节
	   ```

	   stdout是C语言标准库中定义的一个指向标准输出流的指针变量。它是一个预定义的文件指针,用于表示标准输出设备,通常是显示器。在标准库中,stdout指针被定义为FILE类型的变量,可以通过stdio.h头文件引入。使用stdout指针可以对标准输出进行各种操作,比如输出数据到屏幕上。



	4. 使用无缓冲模式重定向输出:使用`stdbuf`命令来修改程序的输出缓冲模式。例如:
		`command | stdbuf -o0 tee log.txt`。			`-o0`参数表示禁用输出缓冲。

	5. 强制刷新缓冲区:可以使用`stdbuf`命令的`-oL`参数,它会设置行缓冲模式,即每输出一行就会刷新缓冲区。例如,你可以这样使用tee命令:
		```
		command | stdbuf -oL tee log.txt
		```
		这样,每次输出一行日志时,缓冲区都会被刷新到log.txt文件中,确保不会缺失任何日志。

	6. 使用unbuffer命令:unbuffer命令可以禁用程序的输出缓冲。例如:
		`unbuffer command | tee log.txt`。

	7. 使用其他工具:除了tee命令,还可以尝试其他工具来重定向日志,如nohup、script等。

	如果以上方法仍然无法解决问题,可能需要查看程序本身的日志输出机制,以确定是否有特殊的输出行为或缓冲设置。

4、问题:ubuntu下安装qt5.9.9后,创建新程序然后编译,报错“-1: error: cannot find -lGL”。

原因:
Qt 安装好后,其实里面已经有OpenGL库了,不过库文件名字是libGLSL.so,不是标准的libGL.so。

解决办法:
使用如下命令创建软链接,然后重新编译。

ln -s   /home/user/Qt5.9.9/Tools/QtCreator/lib/qtcreator/libGLSL.so    /usr/lib/libGL.so
————————————————
版权声明:本文为CSDN博主「草丛中的蝈蝈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43248127/article/details/118696456

你可能感兴趣的:(Linux,linux,java,服务器)