利用win10自带hyper-v虚拟机安装centos7后,hyper-v默认分辨率较低导致虚拟机窗口较小,解决方法如下:
1、打开 Terminal
2、进入root模式,输入:cd /etc/default,输入:vim grub
3、进入编辑模式,在末尾加入一行:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1280x720" ,红色部分是我电脑的分辨率,根据自己情况更改
4、更新grub,使之生效,在centos7下的update-grub命令是:grub2-mkconfig -o /boot/grub2/grub.cfg
5、重启虚拟机,命令:reboot
远程桌面软件:http://www.xrdp.org/
方法/步骤
-
打开已经安装了CentOS7的主机,以root用户登录,在桌面上打开一个终端,输入命令:rpm -qa|grep epel,查询是否已经安装epel库(epel是社区强烈打造的免费开源发行软件包版本库);
如果没有,则以yum方式安装:yum install epel-release
-
以yum方式安装xrdp,在终端上输入命令:yum install xrdp
-
以yum方式安装tigervnc-server(因为Xrdp最终会自动启用VNC,所以必须安装tigervnc-server,否则xrdp无法使用),命令为:yum install tigervnc-server
-
为用户root设置vnc密码,命令为:vncpasswd root;
-
配置xrdp.ini文件,修改XRDP最大连接数,否则远程连接可能无法成功(实验过,貌似没啥关系,可以忽略,如果不行再配置)
把max_bpp=32, 改为max_bpp=24
-
查询SELinux状态,配置或关闭SELinux , 否则可能无法启动xrdp服务,或者启动出错;
查看SELinux状态命令:/usr/sbin/sestatus -v
临时关闭SELinux(设置SELinux 成为permissive模式)命令:setenforce 0
-
由于是测试,所以在此直接关闭防火墙,命令为:
systemctl stop firewalld.service
如果需要开机关闭,则命令为:
systemctl disable firewalld.servie
-
或者不关闭防火墙,打开3389端口命令:
firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload
-
启动xrdp服务,并且设置为开机启动(大多数博客的说法,但是本人将vnc服务禁用后,远程连接依旧可以使用):
启动服务命令:systemctl start xrdp
开机启动命令:systemctl enable xrdp
-
在键盘上按下“Ctrl+R”键,在弹出的“运行”框中输入“mstsc“命令,按“确定”,打开Windows远程连接,输入IP地址开始远程连接,在弹出的Xrdp用户验证窗口中输入CentOS7的用户名和密码,登录如图:
windows/linux 文件拷贝软件:Xmanager
centos 7 安装 chrome步骤如下:
1、进官网下载chrome rpm 格式安装包,下载地址 https://www.google.cn/chrome/
Download Chrome for Linux
Debian/Ubuntu/Fedora/openSUSE
Please select your download package:
64 bit .deb (For Debian/Ubuntu) 64 bit .rpm (For Fedora/openSUSE)
选择 64 bit .rpm (For Fedora/openSUSE),下载后文件 google-chrome-stable_current_x86_64.rpm
2、chrome 安装
2.1、切换终端目录到下载文件目录,执行安装命令:
rpm -ivh google-chrome-stable_current_x86_64.rpm
2.2、若安装失败,并提示缺少依赖,如提示can not find libXss.so.1 libappindicator3.so.1,可先获取依赖包信息 查询命令:
repoquery --nvr --whatprovides libXss.so.1
repoquery --nvr --whatprovides libappindicator3.so.1
2.2、查询结果:
libXScrnSaver-1.2.2-6.1.el7
2.3、安装依赖:
yum install libXScrnSaver*
yum install libappindicator*
///也可以这样安装依赖
1.查找哪个源包含这个命令
[root@localhost ~]# yum provides */lsb_release
2.从上面的输出可以看到redhat-lsb-core-4.1-27.el7.centos.1.x86_64 这个package包含这个命令,那就安装这个包。
[root@localhost ~]# yum install redhat-lsb-core-4.1-27.el7.centos.1.x86_64
有可能还缺少fonts,安装之:
# yum install liberation-fonts
///
2.5、再次执行安装命令即可
rpm -ivh google-chrome-stable_current_x86_64.rpm
安装成功后,可在菜单栏(applications)-Internet中启动chrome
3、卸载chrome
查询已安装的chrome:
[root@ou Downloads]# rpm -qa|grep chrome
google-chrome-stable-68.0.3440.106-1.x86_64
执行卸载命令:
[root@ou Downloads]# rpm -e --nodeps google-chrome-stable-68.0.3440.106-1.x86_64
使用Linux中的mount命令挂载一个Windows的共享目录
# mount -t cifs //10.0.0.1/share /mnt/sharefolder -o username=sensirx,password=sensirx,vers=2.0
红色为windows共享目录及用户密码,蓝色为linux挂载位置
Hyper-v设置linux固定ip
一、创建CentOS 7专用的虚拟交换机
打开Hyper-v控制面板,找到右边的“虚拟交换机管理器”
进去后,点击“新建虚拟网络交换机”,填写名称后,选择“内部”
打开网络中心,修改配置如下图,注意ip地址随意填,形式为 “192.168.xxx.xxx”,子网掩码固定“255.255.255.0”
二、配置CentOS 7内部固定ip
右键“连接”CentOS 7
输入账户密码登录后,输入一下命令
$ cd /etc/sysconfig/network-scripts
然后输入命令$ ls 查看文件夹中的文件,如图
要修改的就是名称为“ifcgf-eth0”的文件,输入命令$ vi ifcfg-eth0,修改文件内容如图,重点修改红框中选中的地方
保存修改退出后,执行重启网络服务的命令
$ systemctl restart network
ping一下刚才设置好的固定ip试一下
成功了,但是这个时候我们想访问外网是不行的,不信可以试下ping www.baidu.com
所以,为了能访问外网,还要做一点小修改,回到windows上,进入网络共享中心,找到“以太网”,修改如下图
此时提示
系统要把ip改为默认192.168.137.1,我们当然不需要这个ip,回去打开CentOS 7的虚拟网络
修改这里为上面第一步中设置的ip,我的是192.168.46.1
改好了之后,再次重启下网络,执行$ systemctl restart network 然后 ping www.baidu.com
至此,固定ip已经配置好了。
备注:windows重启后,网络共享可能会出现问题,这时先关闭网卡的共享,然后再开启就可以了。
centos7下Qt无法输入中文
重新安装一下ibus后重启(若使用的是自带的中文输入法)
$ sudo yum install ibus-qt
$ reboot
Centos7: 设置时区
CentOS7提供三个命令行工具,可用于配置和显示有关系统日期和时间的信息。
timedatectl:
Linux 7中的新增功能,也是systemd其中的一部分。- date:系统时钟,也成为软件时钟,一旦系统启动并且系统时钟被初始化,系统时钟就完全独立硬件时钟。
- hwclock: real-time clock (RTC)通常被称为硬件时钟,(在系统集成电路板上),即使在机器关闭时也能正常工作。实时时钟可以使用UTC( Universal Time)或本地时间,建议使用UTC。
使用timedatectl
命令
显示当前日期和时间:
1
|
timedatectl
|
1
2
3
4
5
6
7
8
9
|
[root@zydev ~]
# timedatectl
Local
time
: Mon 2017-11-06 01:22:46 CST
#中部标准时间,UTC+8
Universal
time
: Sun 2017-11-05 17:22:46 UTC
RTC
time
: Sun 2017-11-05 17:22:46
Time zone: Asia
/Shanghai
(CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC
in
local
TZ: no
DST active: n
/a
|
改变ntpd和chrony状态不会立即生效,需要执行:
1
|
systemctl restart systemd-timedated.service
|
改变当前时间
该命令同时更新系统时间和硬件时钟。其结果类似于使用date --set
和hwclock --systohc
命令。如果NTP
启用服务,该命令将失败。
1
2
3
4
5
6
7
8
9
10
|
[root@zydev ~]
# timedatectl set-time 23:06:45
[root@zydev ~]
# timedatectl
Local
time
: Mon 2017-11-06 23:06:51 CST
Universal
time
: Mon 2017-11-06 15:06:51 UTC
RTC
time
: Mon 2017-11-06 15:06:51
Time zone: Asia
/Shanghai
(CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC
in
local
TZ: no
DST active: n
/a
|
默认情况下,系统配置硬件时钟使用UTC,如果要配置为当地时间,加上参数set-local-rtc
1
|
timedatectl
set
-
local
-rtc boolean
|
更换布尔为yes或者no,默认是no
更改当前日期
1
|
timedatectl
set
-
time
YYYY-MM-DD
|
请注意,更改日期而不指定当前时间会导致将时间设置为00:00:00。
要将当前日期更改为2017年6月2日并保持当前时间(下午11:26)
1
|
timedatectl
set
-
time
”2017-06-02 23:26:00”
|
更改时区
列出时区
1
|
timedatectl list-timezones|
grep
Asia
|
更改时区为香港
1
|
timedatectl
set
-timezone Asia
/Hong_Kong
|
使系统时钟与远程服务器同步
timedatectl
命令还允许您使用该NTP
协议启用系统时钟与一组远程服务器的自动同步。启用NTP将启用chronyd
或ntpd
服务,具体取决于它们中的哪一个被安装。
1
|
timedatectl
set
-ntp boolean
|
启用同步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@zydev ~]
# timedatectl set-timezone Asia/Hong_Kong
[root@zydev ~]
# timedatectl
Local
time
: Mon 2017-11-06 23:22:07 HKT
Universal
time
: Mon 2017-11-06 15:22:07 UTC
RTC
time
: Mon 2017-11-06 15:22:07
Time zone: Asia
/Hong_Kong
(HKT, +0800)
NTP enabled: no
NTP synchronized: no
RTC
in
local
TZ: no
DST active: n
/a
[root@zydev ~]
# timedatectl set-ntp yes
[root@zydev ~]
# timedatectl
Local
time
: Mon 2017-11-06 23:24:14 HKT
Universal
time
: Mon 2017-11-06 15:24:14 UTC
RTC
time
: Mon 2017-11-06 15:24:14
Time zone: Asia
/Hong_Kong
(HKT, +0800)
NTP enabled:
yes
NTP synchronized: no
RTC
in
local
TZ: no
DST active: n
/a
|
使用date命令
缺省情况下,date
显示本地时间。要显示在UTC的时间,运行与所述命令--utc
或-u
命令
1
2
3
4
|
[root@zydev ~]
# date
Mon Nov 6 23:34:09 HKT 2017
[root@zydev ~]
# date -u
Mon Nov 6 15:34:13 UTC 2017
|
可以通过在命令行上提供选项来自定义显示信息的格式: +"format"
控制序列 | 描述 |
---|---|
%H | HH格式的小时(例如17 )。 |
%M | MM格式的分钟(例如30 )。 |
%S | 第二个是SS格式(例如24 )。 |
%d | DD格式的月份中的某一天(例如,16 )。 |
%m | MM格式的月份(例如09 )。 |
%Y | YYYY格式的年份(例如2016 )。 |
%Z | 时区缩写(例如,CEST )。 |
%F | YYYY-MM-DD格式的完整日期(例如2016-09-16 )。这个选项等于%Y-%m-%d 。 |
%T | 全时以HH:MM:SS格式(例如,17 :30: 24)。这个选项等于%H:%M:%S |
改变当前时间
更改时间
1
|
date
-s 23:43:45
|
同时更改时间和日期
要将当前日期更改为2017年6月2日并保持当前时间(下午11:26)
1
|
date
-s
"2017-06-02 23:26:00"
|
更改日期而不指定当前时间会导致将时间设置为00:00:00
使用hwclock
显示硬件时钟当前时间
1
2
|
[root@app-01 ~]# hwclock
Tue 07 Nov 2017 11:42:15 AM CST -0.269798 seconds
|
将硬件时钟设置为特定日期和时间,并将硬件时钟保持为UTC
1
|
hwclock --
set
--date
"21 Oct 2016 21:17"
--utc
|
硬件时钟与系统时间同步,并设置为UTC时间
1
|
hwclock --systohc --utc
|
硬件时钟与系统时间同步,并设置为本地时间
1
|
hwclock --systohc --localtime
|
svn命令大全
安装:
$ sudo yum install subversion
# 测试安装是否成功
$ svnserve --version
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
LD_LIBRARY_PATH环境变量设置及Linux动态库查找方法
在linux下的编程,毫无疑问的迟早都要用到LD_LIBRARY_PATH这个环境变量,不过这个环境变量是基于shell的,也就是说只有在当前设置了的shell里才会有作用,因此每次打开新的shell运行程序不停地设置LD_LIBRARY_PATH,是一件非常麻烦的事情,所以我们就会想有不有什么一劳永逸地方法,使得设置之后就不用再去设置了?答案是肯定的,即在~/目录下打开.bashrc文件,设置环境变量如下:
-
LD_LIBRARY_PATH=dir: $LD_LIBRARY_PATH
-
export LD_LIBRARY_PATH
那么以后打开新的shell执行程序是,再也不用每次打开shell就设置LD_LIBRARY_PATH环境变量了。
附:
linux共享库位置配置(LD_LIBRARY_PATH环境变量 或者 更改/etc/ld.so.conf 或者 使用-R选项)
下面的几段是转载的,看了之后明白linux怎么找到共享库的
===========================================================================================
Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。
但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢?
目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从 ld.so.cache 查找。
传统上,Linux 的先辈 Unix 还有一个环境变量:LD_LIBRARY_PATH 来处理非标准路经的共享库。ld.so 加载共享库的时候,也会查找这个变量所设置的路经。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib
export LD_LIBRARY_PATH
但是,有不少声音主张要避免使用 LD_LIBRARY_PATH 变量,尤其是作为全局变量。这些声音是:
* LD_LIBRARY_PATH is not the answer - http://prefetch.net/articles/linkers.badldlibrary.html
* Why LD_LIBRARY_PATH is bad - http://xahlee.org/UnixResource_dir/_/ldpath.html
* LD_LIBRARY_PATH - just say no - http://blogs.sun.com/rie/date/20040710
解决这一问题的另一方法是在编译的时候通过 -R<path> 选项指定 run-time path。
1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。
比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程序运行时被找到。
3. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。
4. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。
5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。
LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。在linux下,还提供了另外一种方式来完成同样的功能,你可以把这些目录加到/etc/ld.so.conf中,然后调用ldconfig。当然,这是系统范围内全局有效的,而环境变量只对当前shell有效。按照惯例,除非你用上述方式指明,loader是不会在当前目录下去找共享库的,正如shell不会在当前目前找可执行文件一样。