• Linux系统中JAVA创建文件后权限不足应该如何解决

    Linux系统中JAVA创建文件后权限不足应该如何解决

    在作业中,项目使用文件上传。 这个功能很常见。 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件。 它是怎么发生的? 经过许多问题之后,事实证明这是由于Tomcat的配置所致! 正文: 最近在Linux系统中通过tomcat部署项目后,由于程序有上传文件功能。而上传后的却无法查看文件(通过createNewFile创建)。后来发现文件的权限为-rw-r-----,而文件的拥有者是root,这样就只有拥有者有root用户组的拥有读取权限。 通过研究发现,Linux通过umask变量来控制创建文件的默认权限问题。我们知道在Linux系统规定,创建文件的最高权限为666,而创建文件夹的最高权限为777,系统通过变量umask来控制创建文件的权限问题。如果当umask的值为022时,则创建的文件权限为644,即权限是通过最高权限减去umask的值来控制的。 先来看看,上传后文档的权限: 我们可以看到,当文件上传后,文件多所属者是root.但是访问不了,凯哥手动设置权限为777的时候,浏览器就可以访问到了。但是通过程序上传的时候,文件上传后所属者也是root,但是权限变成了640.而这个640权限,通过ftp是访问不到的。凯哥图片域名指向了图片服务器的根目录。这样来看,应该是权限不够导致的。于是开始各种尝试。分析后,想,会不会是tomcat自己搞的鬼呢?于是,搜索后,看到一篇文章,但Linux系统umask的默认值是0022,也就是说创建的文件应该是644的权限,而上传的文件却是640的权限。后来通过对查询Tomcat发现从tomcat8开始,catalina.sh文件中有下面几行代码 于是根据文章提示,找到自己tomcat的catalina.sh文件,大概在286行左右,如下图: 一看,确实发现,tomcat的配置: # Set UMASK unless it has been overridden if [ -z “$UMASK” ]; then #如果是0027的话,文件上传后,权限640,图片域名访问不到。需要修改 #UMASK=“0027” fi umask $UMASK 于是,根据文章,果断修改成“0000”: 保存文件,重启tomcat,重新上传文件后,进行访问,图片正常访问成功! 来看看,修改后,上传文件的权限: 权限变化后,就可以正常访问了。

    时间:2020-09-27 关键词: Linux java 权限

  • 但是如何将不同的操作系统移植到Android

    但是如何将不同的操作系统移植到Android

    我们已经看到许多用于所有Windows Mobile设备的端口,但是如何将不同的操作系统移植到Android呢?XDA成员和传奇人物mamaich为我们带来了两个适用于Android设备的模拟器,这将使Android用户可以启动Windows95。QEMU和BOSCH在知道如何使用它们的人们中广受欢迎,因为它们已在其他项目中使用。在其他设备上运行不同的Windows版本。 尽管该项目运行顺利,但仍有待改进。不幸的是,mamaich提到他将不会继续开发这些港口。但是,他分享了所有具有合适技能的人所需的全部资源和知识,以使他从上次离开的地方继续前进。在许多要求中,需要具有大量RAM和至少VGA屏幕的设备。 BOCHS太慢而无法使用,但非常稳定。 QEMU确实非常快-但有故障。SB16仿真正常,但没有MIDI音乐。FPU仿真不正确/不完整,因此可能导致某些程序无法运行或行为异常。网络无法正常工作。键盘/鼠标仿真远非完美。 如果要在QEMU中禁用32位磁盘驱动程序,则Windows 9x可以在QEMU中工作。这是Android中的错误(扩展/写入功能不起作用)。Windows 9x速度确实非常快。 此QEMU构建基于0.9.1,较新的版本具有ARM TCG中的错误,无法启动Windows或类似的操作系统。 我不会继续从事这两个项目。如果有人感兴趣,我将提供所有资源和有关构建的一些信息。需要具备C ++,ARM和x86 asm知识。

    时间:2020-09-25 关键词: Android 移植

  • 现在Ubuntu Linux系统可以在ThinkPads与ThinkStation进行预装了

    现在Ubuntu Linux系统可以在ThinkPads与ThinkStation进行预装了

    尽管Linux桌面之年仍是梦想,但对这种开源操作系统的认可和采用可能从未如此出色。 部分原因是由于像Canonical这样的公司,不仅为企业而且为消费者推广了Linux。 但是,客户可能不想在新的笔记本电脑或台式机上安装Linux。 利用Ubuntu和Lenovo制造商之间的最新合作成果,您不再需要假设您将购买新的ThinkPad或ThinkStation。 ThinkPads上的Ubuntu几乎是一个绝配。Linux仍然是许多开发人员和系统管理员的首选操作系统,并且对于ThinkPads和更年轻的ThinkStation桌面也适用。那么,为什么不从一开始就将这两部分放在一起呢? Canonical和Lenovo的这一声明恰好做到了这一点,使购买者可以选择在下次购买Lenovo PC时已经安装Ubuntu 20.04 LTS。当然,事后事实总是可以在几乎任何PC上安装Linux,而不仅仅是Ubuntu,而且Canonical甚至提供了自定义部署选项,可以将Ubuntu放置在Lenovo计算机上。但是,这消除了所有的复杂性和混乱,并且让Ubuntu在您首次启动时就已准备就绪。 不过,针对Lenovo经Ubuntu认证的设备的程序扩展不仅涉及预加载Ubuntu。它还保证了所有硬件和软件可以完美地协同工作。甚至包括NVIDIA GPU驱动程序,任何Linux用户都会证明这是一个巨大的痛苦。 可以预装Ubuntu的计算机列表涵盖了将近30台设备,其中包括联想最受欢迎的ThinkPad X1系列。这些将从本月开始在全球范围内提供,但仅在2021年的整个阶段逐步推出。

    时间:2020-09-23 关键词: ubuntu thinkstation thinkpads Linux

  • 浅谈手机系统——iOS

    浅谈手机系统——iOS

    我们知道,iOS的原始名称是iPhone OS,它是一种类似于UNIX的商业操作系统。 而大家也都常说iOS是一个封闭式的系统,为什么这么说呢?因为iOS的系统并未开源,即闭源。 什么是开源? 开源,(Open Source)全称为开放源代码。开源系统即开放源代码的系统。开放源代码意味着大家都可以在其基础上进行修改操作。开源系统则意味着大家都可以修改这个系统。 开源并不代表着可以不重视版权,用户在使用开源产品时,不但需要说明产品来自开源软件和注明源代码编写者姓名,而且还应把所修改产品返回给开源软件,否则所修改产品就可视为侵权。 正因为iOS是闭源操作系统,所以大家不能去修改iOS这个系统,也就导致了现在iOS就是iOS,并没有什么基于iOS定制的第三方操作系统。 但有的用户通过一些手段就可以修改系统文件,达到修改主题等等自己的目的,这个方法类似于Android中的root,在iOS中,我们称之为越狱。 什么是越狱? iOS 越狱(iOS Jailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到 iOS 的最高权限,越狱软件适用于iPhone、iPod touch、iPad及 Apple TV 第二代上的 iOS 系统。用户越狱完毕之后,可以透过如Cydia这一类包管理器,来安装 AppStore 以外的扩展软件及外观主题,或是完成越狱前不可能完成的动作,如安装Linux系统。 不完美越狱,是对 iOS 系统上越狱效果的一个描述。英文原文为 Tethered jailbreak,意为被"栓住的越狱"。不完美越狱具体表现是经过这种类型越狱的设备无法正常重启手机(失去越狱,部分系统功能失效,甚至白苹果)。 如果要恢复越狱需连接电脑进入DFU并运行之前使用的越狱工具进行引导,以使设备正常重启并开机。不完美越狱后可以安装Semitether插件来避免不完美越狱在紧急情况重启也能正常开机。不完美越狱往往依靠的是iOS设备的硬件漏洞。 说了这么多,iOS给大家的印象就是封闭的操作系统,可为什么有很多人喜欢用呢?因为iOS用起来非常流畅、丝滑。说到这,咱们不得不详细说说iOS。 iOS发展iOS操作系统基本上从2007年诞生以来每年更新一个大版本,每个大版本会相应更新一些新的特性和功能,具体汇总如下 iOS系统架构iOS的系统架构和Android一样,也分了四个模块,从底层到上层分别为Core OS、Core Services、Media、Cocoa Touch,而且四个模块跟Android的四个模块所实现的功能几乎是一一对应的。 Core OS 核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。可以认为是Darwin的系统内核。 Core Services 核心服务层为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架 CFNetwork(网络访问) Core Data(数据存储) Core Location(定位功能) Core Motion(重力加速度,陀螺仪) Foundation(基础功能如NSString) Webkit(浏览器引擎) JavaScript(JavaScript引擎) Media媒体层主要提供图像引擎、音频引擎、 视频引擎框架图像引擎(Core Graphics、Core Image、Core Animation、OpenGLES) 音频引擎 (Core Audio、 AV Foundation、OpenAL) 视频引擎(AV Foundation、Core Media) Cocoa Touch 可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架 UIKit(界面相关) EventKit(日历事件提醒等) Notification Center(通知中心) MapKit(地图显示) Address Book(联系人) iAd(广告) Message UI(邮件与SMS显示) PushKit(iOS8新push机制) iOS为何更流畅 我们在日常使用中经常会听到说iOS的使用比Android要流畅,那么为什么我们会有这种感知呢,实际上这根iOS和Android的工作机制不同有关,下面我们来分析下为何iOS会显得更流畅 1、响应优先级不同 iOS:Touch—Media—Service—Core,最先响应屏幕。 Android:Application—Framework—Library—Kernal,和显示相关的图像处理属于Library,触摸屏幕之后会先激活应用、框架然后才是屏幕。 也就是说iOS对于屏幕触控的反馈优先响应屏幕,所以会给使用者造成iOS反应快的感知,比如同一个应用iOS和Android都是2秒打开的话,iOS会先快速打开APP然后2秒钟后加载完成,而Android则是先2秒钟加载完成后才显示打开APP。虽然总耗时相同,但给用户的感知会是iOS更快。 2、硬件工作配置不同 iOS:基于GPU硬件加速,可以不完全借助CPU或者程序本身,而是通过GPU进行渲染达到更流畅的操控表现。 Android:图形特效大多都要靠程序本身进行加速和渲染,并严重依赖CPU运算和操作,加大了处理器的负荷,从而出现卡顿的问题。(虽然Android高版本系统默认开启硬件加速,但无法像iOS系统一样做到系统层级的加速全部图形特效。 3、开发机制不同 iOS:Objective-C或Swift,编译器为gcc,不要虚拟机在中间插手,执行效率高。 Android:通过Java虚拟机来执行,系统需要占用大量内存来获取执行速度,再加上不定期的内存自动回收机制,直接导致了卡顿现象的出现。(事实上Android在换位ART模式后避免了虚拟机带来的弊端,启动速度已经接近于iOS) 4、系统设计不同iOS:封闭性,所有APP运行对象比较单一,App Store。Android:终端对象参数多变,各Android厂商的应用市场,APP管理混乱。 5、消息推送机制不同 iOS:APNs统一管理,应用不会在后台占用内存。 Android:没有统一管理机制,应用可以一直留在后台,导致内存不足。(虽然Google有官方的GCM推送机制,但国内无法使用,所以国内更多是接入各类的第三方推送,不够统一,而国内的统一推送联盟从成立后就没什么大动作。。。) 好啦,以上就是我们给大家带来的ios介绍,感兴趣的朋友可以点赞评论分享哦!后续我们会为大家分享更多好玩有趣的知识,点个关注吧!

    时间:2020-09-08 关键词: iOS dfu semitether

  • 浅谈Linux中的文件与目录

    浅谈Linux中的文件与目录

    我们知道,在Linux系统中,“一切都是文件”的说法随处可见,这意味着Linux由文件系统组成。 掌握文件和目录是掌握此系统的最大要求。 Linux的目录的结构属于树状结构,那么要想访问某个目录的话,必须先要理解绝对路径与相对路径的概念,绝对路径很容易理解那就是我们创建的文件实际存放的位置,是由根目录/开始写起。而相对路径则是相对于某个目录而言的,不是由/开始写起的。相对路径的写法很方便,用户不用再很多层叠路径下一个文件夹一个文件夹输入了。 对文件以及目录的操作我们一般使用的命令有如下几个: "./"代表当前目录; “../”代表上一层目录; “~”代表home目录; “-”前一级目录; “cd”切换目录命令; “mkdir”创建一个目录; “touch”创建新文件,并且对旧文件更新文件戳; “pwd”显示当前目录; “rmdir”删除当前目录。 “ls”查看当前目录文件; “cp”复制目录; “mv”移动目录; “rm”删除目录。 总而言之,不管我们在科研还是在工作中,对于目录文件管理会贯彻始终,因为Linux并不像Windows一样有很漂亮的图形界面。我们每一步操作都是跟文件有关系,熟练掌握文件与目录的操作手法是非常有必要的,不仅提高效率,而且还能让我们对其文件系统的结构更加明了。

    时间:2020-08-09 关键词: 目录 文件 Linux

  • Linux——Putty菜单介绍

    Linux——Putty菜单介绍

    由于Putty是一种非常常用的远程命令行工具,除了基本的登录,会话和其他操作外,还有一些常用的菜单操作,然后简要介绍了常用功能。 Putty菜单 Putty菜单的打开方式有两种:1、左键点击Putty窗口左上角的图标;2、右键窗口上方的导航条。具体效果如下图所示: Event Log 点击后,会弹出一个新窗口,其中记录了连接期间的发生的重要事件。该事件可以进行复制,在进行某些问题分析时,有可能会用到。 点击后,将弹出一个Putty的全新启动窗口,此窗口与直接从电脑中双击打开Putty的窗口效果相同。 Duplicate Session 点击后,将打开一个新窗口,该窗口使用的配置和当前窗口的配置相同,并且新打开的窗口会处在登录的状态,与在Session列表中双击打开的方式效果一致。 Restart Session 当前选项仅在非活动窗口中会出现,点击后,会重新激活当前的窗口,但是需要重新登录。非活动窗口仅在特定情况下会出现,例如: Close window on exit选择了Never时,使用“exit”退出后; Close window on exit选择了Only on clean exit 时,网络异常。 Saved Sessions 点击后,会出现二级菜单,在二级菜单中列出来的是已经保存的Session列表,与初始界面中的Session列表内容相同,在二级菜单中点击Session即可打开该连接。 Change Settings 点击后,将显示简化版的配置窗口,可以对当前的Session进行配置修改。 Change Settings 上图中是对窗口的外观进行了设置,设置了窗口的背景色,设置完成后,点击【Apply】即可生效。 Copy All to Clipboard 点击后,会将当前窗口中的全部可见的输出记录进行复制。需要注意的是“clear”命令并不是真正的清空了记录,所以,此复制功能复制的信息包含了“clear”命令前的部分。 Clear Scrollback 点击后,会让Putty移除在滚动条离开窗口顶部后,所保留的所有输出和命令等信息。需要注意的是,执行此操作后,被移除的信息将不能通过滚动看见或者【Copy All to Clipboard】复制出来。 Full Screen 点击后,会全屏化的显示Putty的窗口。 Special Commands 点击后,会出现二级菜单,在菜单中比较重要的其实是SIG开头的信号。这些信号我接触过的应用是在写shell脚本的时候,有时在脚本中需要“trap”一些系统的信号用于逻辑判断或功能处理。Putty可以模拟这些信号,但是不幸的是并不是所有的目标电脑都支持

    时间:2020-08-05 关键词: session putty Linux

  • 你清楚Linux控制台、终端与shell及它们的关系吗?

    你清楚Linux控制台、终端与shell及它们的关系吗?

    当使用Linux时,我们经常会遇到终端和外壳程序的概念。 例如,在桌面版Ubuntu中,我们可以右键单击桌面,然后单击“打开终端”以打开终端。 此时,我们可以在终端中输入Linux命令。 可能有人会问,这不是错字吗? 那么终端和外壳之间是什么关系呢? 1什么是终端 对于什么是终端,我们先看一个定义。可以看出终端就是一个输入输出设备,简单的可以理解为鼠标,键盘和显示器。但是这个好像跟Linux中终端的概念有些出入,下面听我来娓娓道来。 a combination of a keyboard and output device (such as a video display unit) by which data can be entered into or output from a computer or electronic communications system. 但如果想理解了解什么是终端,还需要从“远古”时期说起。在1970年之前,那个时候还没有个人电脑。那个使用只有大型机和小型机,也就是衣柜那么大的计算机。当时比较著名的计算机如DPD-7和GE-45等。 当时Ken Thompson和Dennis Ritchie(就是下图中的两位大神)负责在DPD-7上面开发一个新的操作系统,没错,就是UNIX操作系统。为了提高计算机的使用效率,他们打算让这个操作系统支持多个用户同时使用这台计算机。 但是,当时的显示器是一个非常贵的设备,不太可能每个人都有一个显示器。因此两个人想出了一个变通的方法。他们选择了便宜的电传打字机来做终端设备。这个电传打字机(TeleType)就是ASR33,就是下图这个设备。 这个设备通过键盘将信息输入计算机当中,而计算机的输出则是通过上面的纸打印出来。这样UNIX就成为世界上第一个支持多用户的操作系统,而ASR33则成为第一个Unix终端。后来,缩写TTY也就是用来表示Unix或者Linux终端了。 随着技术的发展和硬件价格的不断降低,终端也变得越来越先进和便宜。1970年,DEC发明了VT05视频终端。就是下面这个东东,可以看出她有个小显示器。也越来越像现在的键盘显示器了。 聊到这里我们知道了,所谓终端,其实就是一个物理设备,也就是计算机的输入输出设备。 2什么是控制台 在上个世纪70年代,终端是通过线缆连接在主机上的。同时,在主机上还有一种特殊终端,它是直接集成在主机上的。这个特殊的终端被称为控制台。这个终端的特点是只能被管理员使用。每一个计算机只有一个控制台,它在外观上与普通终端并没有太大的差异,但最重要的是控制台可以做一些普通终端不能做的事情。 比如当操作系统出现启动失败的时候,它会打印一些信息到控制台上,但终端并不会收到该信息。另外,当操作系统以单用户模式启动的时候,我们就只能通过使用控制台来登录了。这个时候其它终端是没有权限登录的。 3Linux操作系统的终端模拟器 前面我们了解到终端实际上是硬件设备,但是前面我们在Ubuntu上可以用菜单打开一个终端(Open Terminal)。其实,我们打开的这个窗口也是一个终端,我们称这个终端为终端模拟器,它是用软件的方式来模拟一个终端设备。有的时候我们又称它为虚拟终端。 如果你使用的是gnome终端,我们可以通过下面命令看一下它的帮助问答。 man gnome-terminal 可以看出gnome-terminal就是一个终端模拟程序,而它的功能就是访问Unix shell。 gnome是用来模拟Xterm的,而Xterm本身也是一个终端模拟器。它模拟了VT102物理终端。 打开Linux虚拟终端的方法有很多种,如果我们使用的是桌面版的Linux,也就是图形界面版的。那么通常我们可以通过命令打开一个命令行终端。如下所示。 另外,Linux操作系统起来的时候默认是有7个虚拟终端的。这些虚拟终端并非前面所说的在桌面中打开的虚拟终端,而是通过显示器直接显示的。我们可以通过快捷键在这些终端之间进行切换,比如Ctrl+Alt+ F1可以切换到第一个终端,而Ctrl+Alt+ F2可以切换到第二个终端,以此类推Ctrl+Alt+F7可以切换到第七个终端。通常情况下对于图形界面来说,第七个是图形终端,其它是文字终端。 通过前面的介绍,我们从外面理解了关于终端、控制器和虚拟终端等概念。也对Linux操作系统中虚拟终端有所了解。接下来我们将进一步的深入介绍到Linux的内部。 4什么是Shell 其实我们在前面文章中介绍过关于Shell的内容。Shell其实就是一个应用程序,它实现了用户对操作系统访问的接口。比如我们常见的管理文件,用户和网络资源等等,都是通过Shell来完成的。 Shell是一个应用程序,同时它又有很多具体的实现,比较常见的包括Bash、Zsh、 Csh和Ksh等等。 我们前面了解到终端是个物理设备,它被用户用来输入和现实信息,而目前我们使用的虚拟终端则是对物理设备的模拟。Shell则是用来执行用户命令的。这样我们现在就很容易理解终端和Shell的关系。 如果我们通过桌面版打开一个虚拟终端的话,那么终端和Shell的关系如下图所示。 如果我们不是通过本地的设备连接的,而是通过网络来访问计算机的话,那么其关系如下图所示。可以看出,这里面有个pty的组件起了比较关键的作用,它建立了两者之间的关联。 1Linux系统中的tty、pty和pts 前面我们从概念层面对终端、控制台和shell等进行了介绍。但是这些概念在Linux操作系统中是怎样的呢?它们之间的关系又是怎样的呢? 前面已经介绍过tty,它是一个终端,也就是一个输入输出设备的集合。而目前在Linux中都是通过虚拟终端来与计算机交互的,因此在Linux中tty其实就是虚拟终端,可以将其理解为一个软件。如果我们同时按住Ctrl+Alt+F5就可以切换到虚拟终端5,具体如下。 在Linux操作系统中,软件的整体架构要复杂一些,这是因为Linux不仅仅要支持虚拟终端,还有能够支持键盘显示器的物理外围设备,还要支持通过telnet或者ssh等网络的形式的连接。如下图给出了一个完整的示例。 为了支持不同类型的接入方式,在Linux实现了一个伪终端的概念,也就是pty。其中p是pseudo的缩写。 伪终端分为两部分,如上图所示,包括master和slave两部分。其中master实现了对不同接入方式的适配,它实现对来自不同设备或者软件消息的解析,将结果传输给slave;而slave端其实就是一个虚拟终端,它实现了与shell的交互,对于shell来说,ptsiu是一个终端设备。 可能还是不太好理解,我们举一个具体的例子,比如telnet实现对远程计算机的管理,其实在客户端就是发送的各种字符串,通过网络发送给telnet守护进程,然后telnet守护进程调用master的功能实现解析。 今天我们主要从概念和架构的层面介绍了终端、控制台和Shell等概念,并介绍了Linux操作系统中常见的诸如tty、pty和pts等名称。后面我们以一个具体的实例来让大家更加清楚的理解上述架构。

    时间:2020-08-02 关键词: 终端 shell 控制台 Linux

  • iOS14 nfc功能开启关闭方法

    iOS14 nfc功能开启关闭方法

    NFC是一种手机充值功能,Apple手机系统iOS14支持此功能。 如何激活或停用Apple iOS14的NFC功能? 让我们看看如何打开和关闭Apple手机的NFC iOS14功能。 1、打开iPhone手机进入后,选择手机的【设置】图标。 2、进入后,点击【通用】的选项进入。 3、点击后,选择【NFC】的选项。 4、之后,点击NFC选择后方的开关即可开启或关闭。

    时间:2020-07-31 关键词: NFC 苹果 ios14

  • Linux命令格式教程

    Linux命令格式教程

    每个Linux系统命令都提供某些系统功能。 尽管命令很多,但是命令的使用方式还是有一些相似之处的。 总之,Linux命令具有以下常规格式: 命令字 [选项] [参数] (“[ ]”中的内容代表可有可无) 其中命令字是必须写的,代表具体的命令,例如:ls,该命令字的功能是将指定目录中的文件列表显示给命令使用者,但是显示文件列表这个功能在显示格式和显示内容上通常会有更加细化的需求,有时候希望能够以一个文件一行的形式来展示同时附加文件详细的属性信息;有时候希望能够能够按照文件的修改时间来排序;有时候希望能够列出文件名以“.”开头的隐藏文件,类似这种更加具体化的功能需求还会有很多,每个命令字都是如此,因此,Linux命令字的作者通常提供选项来对命令的功能进行微调,以便满足命令使用者更加具体化的使用需求。选项常用的书写格式如下所示: 以 “-”引导短格式选项(单个字符),例如:“-l” 以“--”引导长格式选项(多个字符),例如:“--color” 多个短格式选项可以写在一起,只用一个“-”引导,例如:“-al” 参数是命令字实现功能时所作用的对象,通常是包含访问路径的文件名或目录名等。例如ls /tmp,“/tmp”就是ls命令字的作用对象,代表显示出/tmp目录下的文件列表;再举例:ls -l /media /mnt,“-l”是选项,“/media”和“/mnt”是2个参数,表示一次显示出/media和/mnt目录中的文件列表并以一个文件一行且带有文件属性信息的形式来展示。

    时间:2020-07-14 关键词: 命令 tmp Linux

  • 话说学习linux改变人生

    话说学习linux改变人生

    无论您学习什么,兴趣和持久性都是两个最重要的方面,因为兴趣可以使您更容易入门,持久性可以帮助您成功,学习Linux也不例外! 大学毕业的两年时间里,我干过销售,做过文员,当过前台,适合女生的工作换了一次又一次,并不是吃不了苦,只是我每次的工作都是迫于生计,都不是我所喜欢的。而Linux技术行业不一样,可以这样说,虽然它并不是最轻松的,但确是最理想的,最喜欢的。 我喜欢计算机!看着电视剧与电影中,黑客主角们,手在键盘上打出的悦耳节奏,与扫一眼就能看懂没有任何中文的代码,别提心中有多么崇拜与羡慕了。但空有一肚子的喜欢,根本无用,而一年前的我,也不会想象得到自己会从事这份工作,一直以为这个埋藏在心底的计算机梦想,终究只会是想想而已,并没有得到很大的重视。 好在毕业后人生迷茫聊以度日的日子里,有个朋友指点我转行,也是他的无私教导让我真正开始鼓起勇气,打破原定的安稳却不喜欢的生活,开始追逐那个埋藏在心底,不敢与人说的梦想。 记得他曾经告诉过我,市面上有许多可以学习linux的书,但是大多数都只有生硬的知识概念,枯燥乏味不说,还不易懂,根本不适合什么都不懂的菜鸟!但是他推荐我《linux就该这样学》,容易上手,它从准备工具,到如何安装linux软件直到如何部署动态网络环境,都十分详细的记录在了书本上,其中还有大多数的图片,可以帮助菜鸟更好的理解linux,不会因为乏味枯燥看不懂而放弃学习linux。 可以这样说,这本书他就是为了新手们量身定做的,它可以让你了解linux,垫上入门的砖,即使是毫无基础的新人,毕竟古话说得好,兴趣才是最好的老师。 我会学习并且从事运维技术行业,自然与我对计算机的崇拜和喜欢,有这密不可分的缘故,自小起,我就喜欢看与黑客有关的电视剧与电影,比如说前不久红极一时的《微微一笑很倾城》,里面肖奈与ko的编码较量就看得我热血沸腾,还有小时候美国的电影《黑客帝国》《骇客追缉令》之类的,都是我的最爱。 而凡事都贵在坚持,难在坚持。刚学习linux的前三个月,放弃的念头可以说是经常在我的脑海中徘徊,虽说学习linux与英语的好坏并没有特别大的关系,但是它的编码还是由26个字母组成,对于我这种看见字母就发怵的人,还是会有些畏惧,特别是每次看见复杂难懂的命令和脚本,总会让我感到抓狂。 好在我的身边有朋友。一本好书,详尽的讲解可以帮助我很好的理解那些生硬难懂的命令与脚本,再加上朋友的督促指导,半途而废的念头从时有时无到彻底消失。 当然实验才是检验真理的唯一标准,所以书中的理论知识再生动形象,也没有亲自实验获得的知识多,所以这本书,就是从一开始便教你如何在实验之中理解有关于linux的专业知识。 如今想想,好在我坚持下来了,如果当初真的放弃了,现在一时富足的美好生活怎么样不说,我的梦想肯定会再次石沉大海,而生活也会恢复到之前那种没有梦想,日日为了没有目标混日子而发愁的生活。 有了兴趣与坚持,我想这个世界上,不会有你学不会的事。而同时,学习linux,也可以成为人生的一个新的机遇,即使之前对于计算机行业无感的人,也可以去试着接触一下linux。 而且自我从事这个行业之后,也认识了好多半路出家,靠着极大的魄力转行学习linux,从而改变了自己的一生。 不论是本就喜欢计算机行业还是想要改变人生,选择linux运维技术行业,都是不错的选择,但最重要的是,入门之后,不要轻言放弃,毕竟半途而废放在任何事物上,都会落上一事无成的结果。 如果你喜欢这个行业,那就请你相信你自己,不要害怕,不要轻言放弃,不要觉得自己不是对口专业毕业,而不敢从事这个行业,毕竟现在毕业的大学生研究生,有多少出了校园后,干这之前未涉及过得行业?不用说别人,我自己原本就只是学艺术的,与计算机完全没有任何关系,现在也依旧干的很好! 更不要害怕linux运维技术行业的前景不好,恰恰相反,linux运维技术行业,可以说是近几年来,飞快兴起的行业,而面对现在科技高速发展的互联网时代,linux完全顺潮流发展,当然是不会落伍!只会是最富有潜力的行业。 请不要害怕身边没有朋友涉足或者自己未曾涉足过这个行业,而不敢尝试,我记得我在一本励志散文书中,看到过一句话,概意是‘想要成功只有俩种选择,一是,将别人都会做的事情做到极致,方能成功,二是,去做别人不敢做的事情!’ 敢踏入linux行业,你就会比哪些不敢尝试新事物的人,成功了一步,书是最好的朋友,兴趣是最好的老师,只要你想要,会有水滴石穿,铁杵磨成针的那天。

    时间:2020-07-11 关键词: 编码 运维 Linux

  • 浅谈Linux C Socket Api

    浅谈Linux C Socket Api

    以前都只是在网上搜的能用的例子,对一些参数不是很清楚,这次汇总。而且网络通信还是很常用的通信手段。 UNIX 环境高级编程对Socket通信的描述是套接字网络IPC(进程间通信),可以用于计算机间通信也可用于计算机内通信,管道、消息队列、信号量以及共享内存等都是属于计算机内通信的情况。 一、 套接字Api详细介绍 1. 套接字描述符 首先会先到的是文件描述符,对Linux一切皆文件的哲学又多懂了一点儿点儿。 套接字是通信端点的抽象。与应用程序使用文件描述符一样,访问套接字需要使用套接字描述符。套接字描述符在UNIX系统是用文件描述符实现的。 #include int socket (int domain, int type, int protocal);返回值:成功返回文件(套接字)描述符,出错返回-1 参数domain(域)确定通信的特性,包括地址格式。各个域都有自己的格式表示地址,表示各个域的常数都以AF_开头,意指地址族(address family). 参数type确定套接字的类型,进一步确定通信特征。下图给出了一些类型,但在实现中可以自由增加对其他类型的支持。 参数protocol通常是0,表示按给定的域和套接字类型选择默认的协议。当对同一域和套接字类型支持多个协议时,可以使用proticol参数选择一个特定协议。在A_FINET通信域中套接字类型SOCK_STREAM的默认协议是TCP(传输控制协议);A_FINET通信域中套接字类型SOCK_DGRAM的默认协议是UDP(用户数据报协议)。 字节流(SOCK_STREAM)要求在交换数据之前,在本地套接字和远程套接字之间建 立一个逻辑联系。 Tcp:没有报文界限,提供的是字节流服务。之前写过Qt传输图片的拆包与解包,原因就是如此吧。 调用socket与调用open类型,均可获得用于输入、输出的文件描述符。不用的时候记得close关闭。 2. 寻址 如何确定一个目标通信进程? 进程的标识有两个部分:计算机的网络地址可以确定网络上与之想要通信的计算机 服务可以确定计算机上的特定进程。 2.1 字节序 在同一台计算机上进程间通信时,一般无需考虑字节序。 TCP/IP协议栈使用大端字节序。有关字节序大家可自行百度。 Linux系统是小端字节序。 2.2 地址格式 地址确定了特定通信域中的套接字端点,地址格式与特定的通信域相关。为使不同格式的地址能够被传入到套接字函数,地址被强转换成通用的地址结构sockaddr表示。 Linux中,sockaddr_in定义如下: struct sockaddr_in {sa_family_t sin_family;in_port_t sin_port;struct in_addr sin_addr;unsigned char sin_zero[8];}; 其中成员sin_zero为填充字段,必须全部置0. 所以在网上搜到的例子有使用bzero. 我目前使用的ubuntu定义如下: /* Structure describing an Internet socket address. */struct sockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; }; 还有很多关于地址查询的函数,这里就不一一列举了。 3. 将套接字与地址绑定 使用bind函数将地址绑定到一个套接字上。 #include int bind(int sockfd, const struct sockaddr * addr, socklen_t len);返回值:成功返回0,出错返回-1 参数socklen_t使用sizeof来计算就好了。 对于使用地址的一些限制: 端口号不能小于1024,除非该进程具有相应的特权(即为超级用户)。可见规则总是因人而异,计算机也是如此~ 对于因特网域,如果指定IP地址为ADDR_ANY,套接字端点可以被绑定到所有的系统网络接口。 注意:linux的man命令可以查看api的详细说明,而且还有例子,也挺不错的。 4. 建立连接 1> connect 如果处理的是面向连接的网络服务(SOCK_STREAM或SOCK_SEQPACKET),在开始交换数据前,需要在请求服务的进程套接字(客户端)和提供服务的进程套接字(服务器)之间建立一个连接。使用connect. #include int connect(int sockfd, const struct sockaddr *addr, socklen_t len);返回值:成功返回0,出错返回-1 诶,这个参数好熟悉呀,和bind函数的参数一模一样呀~ 当client连接server时,由于一些原因,连接可能会失败。可以使用指数补偿的算法解决,了解一下即可。 2> listen server调用listen来宣告可以接受连接请求: #include Int listen(int sockfd, int backlog);返回值:成功返回0,出错返回-1 参数backlog提供了一个提示,用于表示该进程所要入队的连接请求数量。其值由系统决定,但上限由中SOMAXCONN指定。 一旦队列满,系统会拒绝多余的连接请求。 3> accept 一旦服务器调用了listen,套接字就能接收连接请求。使用函数accept获得连接请求并建立连接。 #include Int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len);返回值:成功返回文件(套接字)描述符,出错返回-1 函数accept所返回的文件描述符是套接字描述符,该描述符连接到调用connect的客户端。这个新的套接字描述符和原始套接字(sockfd)具有相同的套接字类型和地址族。传给accept的原始套接字没有关联到这个连接,而是继续保持可用状态并接受其他连接请求。 如果不关心客户端标识,可以将addr和len设置为NULL,否则addr存放的是连接的客户端的地址。 如果没有连接请求等待处理,accept会阻塞直到有请求到来。另外server可以使用poll或select来等待一个请求的到来。 5. 数据传输 既然将套接字端点表示为文件描述符,那么只要建立连接,就可以使用read和write来通过套接字通信。read和write函数我几乎不用,了解一下即可。 1> send #include Int send(int sockfd, const void *buf, size_t nbytes, int flags);返回值:成功返回发送的字节数,出错返回-1 注意:如果send成功返回,并不一定并表示连接的另一端的进程接收数据。可以保证的是数据已经无误的发送到网络上。 标志我一直用的是0 2> recv #include int recv(int sockfd, const void *buf, size_t nbytes, int flags);返回值:以字节计数的消息长度,若无可用消息或对方已经按序结束则返回0, 出错返回-1 仍然一直是0 如果想定位发送者,可以使用recvfrom来得到数据发送者的源地址。 3> recvfrom #include int recv(int sockfd, void *restrict buf, size_t len, int flag, struct sockaddr *restrict addr, socklen_t *restrict len);返回值:以字节计数的消息长度,若无可用消息或对方已经按序结束则返回0, 出错返回-1 因为可以获得发送者的地址,recvfrom通常用于无连接套接字。否则,recvfrom等同于recv。 二、 小结 这里面再提一个带外数据,感兴趣的同志可以自行百度。 之前写过一个server和client的例子,连接如下,可对应本文做对比阅读。 LinuxSocket Server 与 Client 例子 个人觉得这只是套接字的入门,如果一个服务器要连接多个客户端呢?以后有机会和大家一起分享下select的套接字用法。

    时间:2020-07-07 关键词: api socket c Linux

  • linux 的标准输入和标准输出

    linux 的标准输入和标准输出

    先给大家看一个很熟悉的例子: [root@testLinux ~]# ifconfig --查看网卡相关信息。 从这里可以看出当运行ifconfig 这个命令,操作系统就会通过显示器输出网卡相关信息,现在我们再回过头去理解上图从键盘到终端处理程序的这个过程,我们从键盘输入命令,然后交给操作系统内核执行之后在输出这样一个过程,因此我们将这里的这里的键盘叫标准输入,而输出的结果通过显示器显示出来叫标准输出,再来看下一个命令的输出结果 [root@testLinux ~]# cat /etc/cmss 由于这个文件夹不存在,因此系统输出了错误的输出,那么我们就称这种输出叫标准错误输出。 由于linux 系统的特性,所有设备都用文件表示,因此上图的键盘(标号1)作为标准输入设备,它 在linux 里面用/dev/stdin 文件表示,标准输出设备 (标号3) 即为显示器用/dev/stdout 文件表示,而标准错误输出设备(标号4)用/dev/stderr文件表示。 1)标准输入(STDIN) ,文件位置: /dev/stdin ,文件描述符为0 2) 标准输出 (STDOUT),文件位置:/dev/stdout , 文件描述符表示为1 3) 标准错误 (STDERR),文件位置:/dev/stderr 文件描述符表示为2 那么这里何为文件描述符呢? 我们知道操作系统运行一个命令或者软件,操作系统会为该命令或者软件分配一个进程,为了区分不同的进程操作系统使用进程号表示,那怎么知道这些进程操作了那些文件呢,因此就使用文件描述符表示操作系统操作的哪些文件,下面以一个例子说明。 例如:在后台一直运行这个命令 [root@testLinux network-scripts]# tail -f /etc/sysconfig/network-scripts/ifcfg-ens33 查看该命令对应的进程号:通过 ps 命令查看到该命令对应的进程号是 7280 接下里查看该进程操作的文件 [root@testLinux network-scripts]# cd /proc/7280/fd 这个目录下面对应的文件即为进程号7280操作的文件,用0,1,2,3...这样的数字表示,这些数字也是文件只不过是链接文件而已,这里的数字有一个专门的名称叫文件描述符,从这里可以得出一个操作系统内核分配一个进程的路径是这样的,在/proc/进程号/fd/ ,fd下面即为该命令或者程序操作的文件。 下面再来看一个进程号为7349操作的文件 从图中可以看出该进程操作的磁盘文件是/etc/passwd,同样这里还是有0,1,2 三个文件,因此这里可以得出的结论是无论进程操作的文件是怎样的,标准输入,标准输出,标准错误输出这三个文件都是必须要的,他们分别代表键盘,显示器,这里有个难以理解的点在于,标准输出和标准错误输出设备默认也是指显示器,只是为了区别用了不同的文件表示而已。

    时间:2020-07-07 关键词: 输入 输出 Linux

  • linux用户相关的命令有哪些?

    linux用户相关的命令有哪些?

    在前面的课程中,我们在Windows系统中安装了Linux虚拟机,并使用xshell远程终端将其连接到Linux虚拟机。 从今天开始,我们可以正式学习Linux。 今天,我们主要介绍某些与用户相关的命令,例如:例如:创建用户命令,用户注销命令,切换用户命令等。 一、提示符说明。 我们打开linux虚拟机,进入到登录界面,输入管理员名root和密码,登录成功后。 如上图,root代表当前登录用户,localhost表示当前linux主机名,~表示当前所在的目录是用户的家目录,#号表示当前登录的用户是管理员用户。 # 标识管理员用户权限。 $ 表示普通用户权限。 hostname 我们可以通过这个命令,打印出当前linux主机名。 二、创建新用户。 为了能演示切换用户,我们需要linux系统至少有2个用户。安装好linux系统后,默认情况下,只创建了一个用户——root用户,即管理员用户。当然,我们在安装linux的时候,也是可以在操作界面添加其它用户的。如果在linux安装时没有添加其它用户,在我们需要时,还可以通过命令来添加用户。添加用户命令如下: useradd bbb 添加用户bbb passwd bbb 设置用户密码 在设置用户密码时,全要求输入2次密码,2次输入的密码要相同,第二次是验证密码。如下图: 三、切换用户。 有了多个用户,这时,我们就可以在用户之间切换了。为什么要切换用户?有时,登录的用户没有管理员权限,而有些操作需要管理员的相关权限,这时,就需要我们来切换到管理员用户,来执行这个操作。以下,就是切换用户所使用的命令: su 只是切换了用户,还在原终端目录。 su - 普通用户切换到root管理员用户和全新的终端。 exit 退出当前用户。 好,我们在xshell终端通过bbb用户登录,登录成功后可以看到,当前登录的用户名是bbb。我们输入su命令,让它切换到管理员用户,这时,会提示要我们输入管理员用户的密码,这是为了安全,否则,不是所有的用户都可以使用管理员权限了? 输入密码后,点击确定键。 如上图所示,用户名已变成了root,但是,所在目录仍然在bbb用户登录时所在的目录bbb。如果不想在切换到root用户后,还在bbb用户的目录的话,可以使用su - 这个命令。在bbb登录后,我们输入 su - 命令。 从上图中,我们可以看到,用户名已经切换成root,目录也切换到root的家目录(~表示用户家目录)。 四、查看当前用户信息。 如果想查看当前登录用户的信息,可以直接使用下面的命令来查看: id 显示当前用户信息。 我们在命令行界面输入id命令,就会打印出当前用户的信息。 上图中,uid表示用户的id号,gid表示用户组的id号。也就是说,root用户是在root用户组。 好了,以上,就是linux用户相关的常规命令。虽然,我们使用的不是特别多,但是,还是要掌握以下的。

    时间:2020-07-06 关键词: root xshell Linux

  • 浅谈Linux系统的几大组件!

    浅谈Linux系统的几大组件!

    每个Linux系统都有许多主要组件。其中一个组件(引导加载程序)从技术上讲是Linux之外的,常常不被谈论。其余组件都是共同打造整个Linux系统的所有软件元素。这些组件是: 引导加载程序 内核 根文件系统 服务 应用程序/程序 引导加载程序 计算机通电、执行一些初始设置后,它会加载引导加载程序到内存中并运行该代码。引导加载程序的主要工作是找到操作系统的二进制程序,将该二进制程序加载到内存中,然后运行操作系统。本文指Linux内核。 引导加载程序此时已完成,内存中的所有代码和数据通常都被操作系统覆盖。引导加载程序不会再次运行,直到计算机再次重置或重启。 嵌入式系统中的引导加载程序不同于典型的笔记本电脑、台式机或服务器计算机。典型的PC通常先加载进入到所谓的BIOS,然后运行Grub这个引导加载程序。嵌入式Linux系统使用Das-UBoot或U-Boot来进行引导。 内核 一旦引导加载程序将Linux内核加载到内存中并运行,内核将开始运行其启动代码。该启动代码将初始化硬件、初始化系统关键数据结构、初始化调度程序、初始化所有硬件驱动程序、初始化文件系统驱动程序、挂载第一个文件系统,并启动第一个程序等。 Linux内核的主要工作是启动应用程序,并为这些应用程序(或Linux中通常所称的程序)之间提供协调。Linux内核不知道应该运行的所有程序。因此,Linux内核仅启动一个程序,并让该程序启动所需的所有其他程序。这第一个程序名为init程序,有时简称“ init”。注意,这第一个程序不需要放在名为“ init”的文件中,但常常放在该文件中。 如果内核找不到init程序,内核的用途不复存在,因而崩溃。 用于嵌入式系统的Linux内核的主要区别在于,它是为了在不同的CPU架构上运行而构建的。否则,内核的运行方式与典型的PC相一致,这是其优点之一。 文件系统 在Linux中,内核将程序分别加载到内存中,内核要求这些程序存储在组织成文件和目录的某种介质上。文件和目录的这种组织称为文件系统。与许多操作系统一样,Linux拥有介质上的文件系统(数据实际存储在存储介质上)和文件系统驱动程序——代码知道如何在解释和更新介质上的文件系统数据。 在Linux中,该介质常常是硬盘。然而,嵌入式系统常常没有硬盘,因此介质可能是其他硬件设备,比如SD卡、闪存甚至内存。 与Windows不同,Linux文件系统与目录而不是与驱动器号相关联。文件系统可以与任何目录相关联,甚至可以与路径中下几层的目录相关联。将文件系统与目录相关联的这个过程名为“挂载”。Linux先从一个名为/(斜杠)的空目录开始。在Linux启动期间,最顶层的文件系统与该目录相关联(即挂载到该目录),该文件系统的所有内容都显示在/下。这个最顶层的文件系统名为根文件系统。 Linux系统要求以某种方式部署根文件系统。因此,该文件系统很特殊,不能只是某种随机组合的目录和文件。bin和sbin等更多目录来自这个地方。 此处的要点是Linux寻找驻留在文件系统中的这第一个程序(即init程序)。需要事先创建根文件系统,然后将其挂载到“/”,之后内核才能启动init程序。 由于嵌入式系统有不同的硬件限制,因此Linux嵌入式系统常常使用特殊的文件系统格式,而不是台式机或便携式计算机上使用的典型的EXT3、EXT4、btrfs或xfs。 服务 内核寻找、加载并运行init程序时,该程序随后负责启动系统的其余部分。这时,内核不再处于活动状态,而是继续协调这项任务:在所有运行中的程序之间共享硬件。 有许多不同的init程序可用。无论选择哪个init程序,该程序都会启动系统发挥用途的所有必需的服务和应用程序。这套服务包括设置网络、挂载额外文件系统和创建图形环境等。 在Linux下,服务只是在后台运行的程序。传统上,Linux人士将这些服务称为守护程序,不过如今我很少看到这个术语。 应用程序/程序 init程序还负责启动常规程序。这些程序确实与用户交互。嵌入式系统常常只有几个用户程序,有时就只有一个。在嵌入式系统中,这组程序使设备能够执行应该做的事情,例如显示地图和航点、收听麦克风或显示录制电视节目的列表,用途无限。 摘要 因此总之,嵌入式计算机启动时,Linux系统将执行以下步骤: 跳入到引导加载程序 跳入到内核 挂载根文件系统 加载并运行init 加载并运行后台服务(或守护程序) 加载并运行应用程序 这每一个步骤都调用系统中所需的组件。

    时间:2020-07-05 关键词: 组件 init Linux

  • 从 Mac 切换到 Linux ,你准备好了吗?

    从 Mac 切换到 Linux ,你准备好了吗?

    在使用Linux之前,我用了15年Apple系统。在2018年安装第一个Linux发行版时,我还只是一个初学者。 这些日子以来,我只用 Linux,我可以用它完成任何任务。浏览网页、观看 Netflix 影片、写作以及编辑我的 Wordpress 博客 ,甚至还在上面跑我的 开源网页分析项目 。 我甚至还不是一个开发者!Linux 被认为不适合日常使用,对非技术人员也不够友好的日子已经一去不返了。 最近有很多关于 Mac 的讨论,越来越多的人已经在考虑转到 Linux。我打算分享我的切换过程中的一些经验,帮助其它新手也能从容转移。 你该不该换? 在换系统之前,最好想清楚,因为有时候 Linux 可能跟你预期不一样。如果你仍希望跟 Apple Watch 无缝配对、可以用 FaceTime 给朋友打电话、或者你想打开 iMovie 看视频,那最好还是不要换了。这些都是 Apple 的专有产品,你只能在 Apple 的“围墙花园”里面使用。如果离不开 Apple 的生态系统,那么 Linux 可能不太适合你。 我对 Apple 生态没有太多挂念,我不用 iPhone,所以跟手机的协作没那么必要。我也不用 iCloud、FaceTime,当然也包括 Siri。我早就对开源充满兴趣,只是一直没有行动。 检查你的必备软件清单 我还在使用 Mac 的时候,就已经开始探索开源软件,我发现大部分在 Mac 上使用的软件,在 Linux 也可以运行。 很熟悉用火狐浏览网页吗?在 Linux 上它也可以运行。想用 VLC 看视频?它也有 Linux 版本。喜欢用 Audacity 录制、编辑音频?它正在 Linux 上等着你呢。你用 OBS Studio 直播?在 Linux 直接下载安装吧。一直用 Telegram 跟朋友和家人保持联系吗?Linux 上当然少不了它。 此外,Linux 不仅仅意味着开源软件。你最喜欢的大部分(也可能是所有)非 Apple 专有软件,都能在 Linux 见到它们的身影。Spotify、Slack、Zoom、Stream、Discord、Skype、Chrome 以及很多闭源软件,都可以使用。而且,在你 Mac 浏览器里面运行的任何东西,同样能够运行在 Linux 浏览器。 你能在 Linux 找到你的必备软件,或者更好的替代品吗?请再三确认,做到有备无患。用你最常用的搜索引擎,在网上检索一下。搜索“软件名 + Linux” 或者“软件名 + Linux 替代品”,然后再去 Flathub 网站查看你能在 Linux 用 Flatpak 安装的专有软件有哪些。 请牢记:Linux 不等于 Mac 如果你希望能够从 Mac 轻松转移到 Linux,我相信有一点很重要,你需要保持包容的思想以及愿意学习新操作系统的心态。Linux 并不等于 Mac,所以你需要给自己一些时间去接触并了解它。 如果你想让 Linux 用起来、看起来跟你习惯的 macOS 一模一样,那么 Linux 可能也不适合你。尽管你可以通过各种方法 把 Linux 桌面环境打造得跟 macOS 相似 ,但我觉得要想成功转移到 Linux,最好的办法是从拥抱 Linux 开始。 试试新的工作流,该怎么用就怎么用。不要总想着把 Linux 变成其它东西。你会跟我一样,像享受 Mac 一样享受 Linux,甚至能有更好的体验感。 还记得你第一次使用 Mac 吧:你肯定花了不少时间去习惯它的用法。那么请给 Linux 同样多的时间和关怀。 选择一个 Linux 发行版 有别于 Windows 和 macOS,Linux 不止一个单一的操作系统。不同的 Linux 操作系统被称作发行版,开始使用 Linux 之后,我尝试过好几个不同的发行版。我也用过不同的桌面环境,或者图形界面。在美观度、易用性、工作流以及集成软件上,它们有很大差异。 尽管作为 Mac 的替代品,被提及最多的是 ElementaryOS 和 Pop!_OS ,但我仍建议从 Fedora 工作站 开始,理由如下: 使用 Fedora 介质写入器 ,容易安装 几乎可以支持你所有的硬件,开箱即用 支持最新的 Linux 软件 运行原生无改动的 GNOME 桌面环境 有一个大型开发团队以及一个庞大的社区在背后支持 在我看来,对从 macOS 过来的新手来说, GNOME 是易用性、一致性、流畅性和用户体验最好的桌面环境。它拥有 Linux 世界中最多的开发资源和用户基数,所以你的使用体验会很好。 Fedora 可以为你打开一扇 Linux 的大门,当你适应之后,就可以开始进一步探索各个发行版、桌面环境,甚至窗口管理器之类的玩意了。 熟悉 GNOME GNOME 是 Fedora 和许多其它 Linux 发行版的默认窗口管理器。它最近 升级到 GNOME 3.36 ,带来了 Mac 用户会喜欢的现代设计。 一定要做好心理准备,Linux、Fedora 工作站和 GNOME 并不是 Apple 和 macOS。GNOME 非常干净、简约、现代、独创。它不会分散你的注意力,没有桌面图标,没有可见的坞站,窗口上甚至没有最小化和最大化按钮。但是不要慌张,如果你去尝试,它会证明这是你用过最好、最有生产力的操作系统。 GNOME 不会给你带来困扰。启动之后,你唯一能看到的东西只有顶栏和背景图片。顶栏由这几样东西组成,“活动”在左边,时间和日期在中间(这也是你的通知中心),右边是网络、蓝牙、VPN、声音、亮度、电池等托盘图标之类的东西。 为什么 GNOME 像 Mac 你会注意到一些跟 macOS 的相似之处,例如窗口吸附、空格预览(用起来跟 “Quick Look” 一模一样)。 如果你把鼠标光标移动到左上角,点击顶栏的“活动”,或者按下键盘上超级键(Super 键,也就是 Mac 上的 ஐ 键),你会看到“活动概览”。它有点像 macOS 系统上“调度中心”和“聚焦搜索”的结合体。它会在屏幕中间展示已打开软件和窗口的概览。在左手边,你可以看到坞站,上面有你打开的软件和常用软件。所有打开的软件下面会有一个指示标志,在右手边,你可以看到不同的工作区。 在顶栏中间,有一个搜索框。只要你开始输入,焦点就会转移到搜索框。它能搜索你已经安装的软件和文件内容,可以在软件中心搜索指定的软件、进行计算、向你展示时间或者天气,当然它能做的还有很多。它就像“聚焦”一样。只需开始输入你要搜索的内容,按下回车就可以打开软件或者文件。 你也能看到一列安装好的软件(更像 Mac 上的“启动台”),点击坞站中的“显示应用”图标,或者按 Super + A 就行。 总体来说,Linux 是一个轻量级的系统,即使在很老的硬件上也能跑得很顺畅,跟 macOS 比起来仅仅占用很少的磁盘空间。并且不像 macOS,你可以删除任何你不想要或不需要的预装软件。 自定义你的 GNOME 设置 浏览一下 GNOME 设置,熟悉它的选项,做一些更改,让它用起来更舒服。下面是一些我装好 GNOME 必做的事情。 在“鼠标和触摸板”中,我禁用“自然滚动”、启用“轻触点击”。 在“显示”中,我打开“夜光”功能,在晚上,屏幕会让颜色变暖,减少眼睛疲劳。 我也安装了 GNOME 优化 ,因为它可以更改额外的设置选项。 在“GNOME 优化”中,我启用了 “Over-Amplification” 设置,这样就能获得更高的音量。 在“GNOME 优化”中,相比默认的亮色主题,我更喜欢 “Adwaita Dark” 主题。 习惯使用键盘操作 GNOME 是以一个极度以键盘为中心的操作系统,所以尽量多使用键盘。在 GNOME 设置中的“键盘快捷键”部分,你可以找到各个快捷键。 你也可以根据自己的理想工作流程来设置键盘快捷键。我将我最常用的应用程序设置为使用超级键打开。比如说,Super + B 打开我的浏览器,Super + F 打开“文件”,Super + T 打开终端。我还把 Ctrl + Q 设置成关闭窗口。 我使用 Super + Tab 在打开的应用程序之间切换,Super + H 隐藏一个窗口,F11 全屏打开软件,Super + Left 把窗口吸附到屏幕左边,Super + Right 把窗口吸附到屏幕左边,等等。 在 Mac 上尝试 Linux 之后再做决定 在完全安装 Linux 之前,在你的 Mac 上先尝试 Fedora。从 Fefora 官网 下载 ISO 镜像。使用 Etcher 将 ISO 镜像写入 USB 驱动器,然后在启动时点击 Option 键,这样你就可以在即用模式下尝试了。 现在您无需在 Mac 上安装任何东西就可以探索 Fedora 工作站了。试试各种东西,能否正常工作:能不能连接 WiFi?触控板是否正常?有没有声音?等等。 也记得花时间来尝试 GNOME。测试我上面提到的不同功能。打开一些安装好的软件。如果一切看起来都还不错,如果你喜欢这样的 Fedora 工作站和 GNOME,并且很肯定这就是你想要的,那么把它安装到你的 Mac 吧。

    时间:2020-07-03 关键词: mac apple Linux

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章