分类 【操作系统】 下的文章

Mac/Linux下SSH管理

Mac上没有诸如xshell之类的客户端,对于非免密登录的主机来说,多个相同主机的连接就要输入多次密码,无法实现会话克隆,非常难受。
终端的ssh是标准的OpenSSH client
如果需要克隆会话功能,可以通过配置打开:
vi ~/.ssh/config
增加:

Host *
    ControlMaster auto
    ControlPath ~/.ssh/socket/%h-%p-%r
    ControlPersist yes

这样每连上一个服务器都会自动在~/.ssh/socket/下创建一个socket文件,下次用相同用户名、端口、主机名进行连接就会自动复用,为防止意外,请事先使用对应用户创建好该目录

ControlMaster 默认是关闭的,通过上述配置可以打开,我们可以通过ControlMaster字段,让新建的SSH Session复用已有的socket通信文件。当我们将该字段值设置为auto时,每次建立SSH连接时程序都会检查是否存在已有到socket文件,有即复用,没有的话就创建一个符合ControlPath规则的socket文件。
ControlPath 用来描述socket文件路径,其中:

%r 是用户名,
%h 是远程主机IP
%p 是端口

ControlPersist yes 打开之后即使关闭了所有的已连接ssh连接,一段时间内也能无需密码重新连接。也可以写作:
ControlPersist 4h 每次通过SSH与服务器建立连接之后,这条连接将被保持4个小时,即使在你退出服务器之后这条连接依然可以重用,因此,在你下一次(4小时之内)登录服务器时,你会发现连接以闪电般的速度建立完成,这个选项对于通过scp拷贝多个文件提速尤其明显,因为你不在需要为每个文件做单独的认证了

注:SSH版本必须是5.6或以上版本才可使用ControlPersist特性
配置文件最终如下:

Host *
    Compression yes
    ServerAliveInterval 30
    ServerAliveCountMax 360
    ControlMaster auto
    ControlPath ~/.ssh/socket/%h-%p-%r
    ControlPersist yes
    ForwardAgent yes

解决MacOS中外接鼠标滚动方向的问题

需求:
1、触摸板和鼠标(非Magic Mouse)同时使用。
2、触摸板用iPhone的方式,手指向上滑动,页面向下走。
3、鼠标滚轮和Windows下一样,滚轮和页面同时下滑。

在偏好设置中设置触摸板的滚动方向后,会同时作用于鼠标和触摸板,这样上述的2、3两点始终有一个无法达成

推荐下载:
http://pilotmoon.com/scrollreverser/

安装后
1、首先把》偏好设置》鼠标和触摸板里面最顶上的勾打上,这个大家都会。(保证你在不用鼠标的时候,trackpad的手势是自然方向)
2、任务栏里面出现一个上下的箭头,就可以调整让鼠标滚轮翻转,而其他的不变。(其实大家不习惯的就是在滚动鼠标中键的时候不是我们操作WIN时候的方式。)把这个调整过来之后,其他一切照旧。
3、然后设置成开机启动,每次启动的时候就会自动翻转鼠标滚轮了。

修改crontab的默认编辑器

crontab默认编辑器为nano,不方便使用。

修改crontab默认编辑器为vi或者其他的编辑器。

export EDITOR="/usr/bin/vim" ; crontab -e

更简单的办法,直接执行命令:select-editor

然后选择编辑器

解决ubuntu 16.04 64bit上fatal error: sys/cdefs.h: No such file or directory

错误信息:

make
Skip building js due to lack of nodejs
Skip building el due to lack of emacs
Skip building cl due to lack of sbcl
Skip building cpp due to lack of g++-6
Skip building i due to lack of ick
cp test/24_cmp2.c out/24_cmp2.c.tmp && mv out/24_cmp2.c.tmp out/24_cmp2.c
git submodule update --init
Submodule '8cc' (https://github.com/shinh/8cc) registered for path '8cc'
Submodule 'Whitespace' (https://github.com/koturn/Whitespace) registered for path 'Whitespace'
Submodule 'tinycc' (http://repo.or.cz/tinycc.git) registered for path 'tinycc'
Cloning into '8cc'...
remote: Counting objects: 4541, done.
remote: Compressing objects: 100% (187/187), done.
remote: Total 4541 (delta 112), reused 0 (delta 0), pack-reused 4354
Receiving objects: 100% (4541/4541), 1.42 MiB | 1.19 MiB/s, done.
Resolving deltas: 100% (3026/3026), done.
Checking connectivity... done.
Submodule path '8cc': checked out '842752b089019bf883e21604a98e712b55fd7727'
Cloning into 'Whitespace'...
remote: Counting objects: 54, done.
remote: Total 54 (delta 0), reused 0 (delta 0), pack-reused 54
Unpacking objects: 100% (54/54), done.
Checking connectivity... done.
Submodule path 'Whitespace': checked out '16be2c0617a6f7846c53802e1a4cb382ccf7dc8a'
Cloning into 'tinycc'...
remote: Counting objects: 8915, done.
remote: Compressing objects: 100% (2610/2610), done.
remote: Total 8915 (delta 6260), reused 8864 (delta 6217)
Receiving objects: 100% (8915/8915), 2.89 MiB | 531.00 KiB/s, done.
Resolving deltas: 100% (6260/6260), done.
Checking connectivity... done.
Submodule path 'tinycc': checked out 'c948732efaf823f36d05608fe716bfcc4a98b70c'
touch out/git_submodule.stamp
make -C 8cc && cp 8cc/8cc out/8cc
make[1]: Entering directory '/home/ondrej/repos/elvm/8cc'
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o main.o main.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o cpp.o cpp.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o debug.o debug.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o dict.o dict.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o gen.o gen.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o lex.o lex.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o vector.o vector.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o parse.o parse.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o buffer.o buffer.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o map.o map.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o error.o error.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o path.o path.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o file.o file.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o set.o set.c
cc -Wall -Wno-strict-aliasing -std=gnu11 -g -I. -O0 -DBUILD_DIR='"/home/ondrej/repos/elvm/8cc"'   -c -o encoding.o encoding.c
cc -o 8cc main.o cpp.o debug.o dict.o gen.o lex.o vector.o parse.o buffer.o map.o error.o path.o file.o set.o encoding.o 
make[1]: Leaving directory '/home/ondrej/repos/elvm/8cc'
cc -c -I. -std=gnu99 -m32 -W -Wall -W -Werror -MMD -MP -O -g -Wno-missing-field-initializers -Wno-missing-field-initializers ir/ir.c -o out/ir.o
In file included from /usr/include/stdio.h:27:0,
                 from ./ir/ir.h:4,
                 from ir/ir.c:1:
/usr/include/features.h:367:25: fatal error: sys/cdefs.h: No such file or directory
compilation terminated.
Makefile:62: recipe for target 'out/ir.o' failed
make: *** [out/ir.o] Error 1

解决方案:

sudo apt install libc6-dev-i386

解决win10任务栏右键失效

原因是什么已经不重要了,大概也许可能是因为在卸载IDM的时候有几个DLL文件无法删除,使用了各种方法删除这几个DLL的句柄占用导致的,也有可能是unlocker软件导致的,也有可能是更新了1709导致的。

现象为:任务栏右键无反应,开始菜单点击无反应(含左右键),ALT+TAB切换任务无反应,全屏远程桌面到其它PC后,本机任务栏始终在在顶端,桌面或者资源浏览器中删除/新增文件后不自动刷新(需要手动刷新或按F5才能显示文件的变更)

解决方案:
网上大多数修改注册表,设置自动刷新的各种方案无效
1.找到系统服务管理控制台(在运行中输入services.msc并运行)
2.找到"UserManager"服务,将启动类型设置为“自动”
3.重启电脑
理论上来说到这一步就解决了,如果还未解决,根据微软知识库中的描述,还可以进行以下步骤的操作:

Press Windows Key + R on your keyboard.
Key in PowerShell and hit Enter.
Right click on the PowerShell icon on the taskbar and select Run as Administrator.
Now paste the following command in the Administrator: Windows PowerShell window and press Enter key:

Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

NOW for the important part ! Locate to : C:/Users/name/AppData/Local/ and delete the TileDataLayer folder. Should fix everything immediately, no reboot necessary. Let me know how it works for you, it did for me! And remember to clean the recycle bin after you deleted the folder and give it 1min then everything is back to normal !
参考:微软官方问答