1. 程式人生 > >Ubuntu常見問題收集

Ubuntu常見問題收集

[TOC]

命令比較長的時候命令不會換行

  1. 特徵: 在命令列輸入的命令比較長的時候(並不是特別長),命令換行的時候並不是另起一行.而是在當前行從頭開始,把當前行的命令覆蓋掉繼續輸入.

原因: PS1變數設定不對,可以通過echo $PS1檢視設定的結果.

# 不僅有PS1,還有PS2,PS3,PS4等待
# 主要是預設提示符用.而PS1配置中
# 這裡僅用PS1做演示, PS2...等知道就行了不做演示也不做深究.


# 最初的時候,PS1配置為下面時,命令較長時則無法自動換行,會在同一行的開頭開始覆蓋,雖然還能執行但是很影響視覺和刪除命令的操作
# 而且呼叫vim 的時候vim的視窗也非常非常的小
root@96e6800ffbe4:~# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
aaaaaaaaaaaaafbe4:~# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


# PS1 為以下時,這時候命令比較長時也是會正常換行的,只是root@96e6800ffbe4:~#不會高亮而已
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
echo PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' >> ~/.bashrc
source .bashrc
root@96e6800ffbe4:~# ll
total 32
drwx------ 1 root root 4096 Aug 25 21:15 ./
drwxr-xr-x 1 root root 4096 Aug 25 20:02 ../
-rw------- 1 root root 1253 Aug 25 20:32 .bash_history
-rw-r--r-- 1 root root 3177 Aug 25 21:15 .bashrc
-rw-r--r-- 1 root root  148 Aug 17  2015 .profile
-rw------- 1 root root 8657 Aug 25 21:15 .viminfo
root@96e6800ffbe4:~# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

# PS1 為以下時,這時候命令比較長時也是會正常換行的,只是root@96e6800ffbe4:~#變成了綠色高亮而已
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
echo PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' >> ~/.bashrc
source ~/.bashrc
root@96e6800ffbe4:~# ll
total 32
drwx------ 1 root root 4096 Aug 25 21:18 ./
drwxr-xr-x 1 root root 4096 Aug 25 20:02 ../
-rw------- 1 root root 1253 Aug 25 20:32 .bash_history
-rw-r--r-- 1 root root 3108 Aug 25 21:18 .bashrc
-rw-r--r-- 1 root root  148 Aug 17  2015 .profile
-rw------- 1 root root 8914 Aug 25 21:18 .viminfo
root@96e6800ffbe4:~# vim .bashrc
root@96e6800ffbe4:~# source .bashrc
root@96e6800ffbe4:~# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

# 知乎網友Chang Liu提供的PS1配置, 這是我比較喜歡的配置了
export PS1="\[\033[38;5;87m\]\u\[$(tput bold)\]\[$(tput sgr0)\]\[\033[38;5;15m\]@\[$(tput sgr0)\]\[$(tput sgr0)\]\[\033[38;5;119m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] [\[$(tput sgr0)\]\[\033[38;5;198m\]\t\[$(tput sgr0)\]\[\033[38;5;15m\]] {\[$(tput sgr0)\]\[\033[38;5;81m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\]}\n\[$(tput sgr0)\]\[\033[38;5;2m\]--\[$(tput sgr0)\]\[\033[38;5;118m\]>\[$(tput sgr0)\]\[\033[38;5;15m\]\\$ \[$(tput sgr0)\]"
# 當設定為該配置時的效果
root@96e6800ffbe4 [21:30:41] {~}
--># ll
total 32
drwx------ 1 root root 4096 Aug 25 21:29 ./
drwxr-xr-x 1 root root 4096 Aug 25 20:02 ../
-rw------- 1 root root 1253 Aug 25 20:32 .bash_history
-rw-r--r-- 1 root root 3109 Aug 25 21:25 .bashrc
-rw-r--r-- 1 root root  148 Aug 17  2015 .profile
-rw------- 1 root root 8607 Aug 25 21:28 .viminfo
root@96e6800ffbe4 [21:31:33] {~}

# 論壇http://forum.ubuntu.org.cn/viewtopic.php?f=180&t=466064使用者<恆河沙數1>提供的PS1配置, 也是我比較喜歡的一種配置
echo 'PS1="\[\033[01m\][\[\033[01;32m\]\t\[\033[00m\]\[\033[01m\]@\[\033[01;34m\]\w\[\033[00m\]\[\033[01m\]]\n\$\[\033[00m\] "' >> ~/.bashrc
souce ~/.bashrc
[10:35:29@~]
$ ll
total 36
drwx------ 1 root root 4096 Aug 27 10:33 ./
drwxr-xr-x 1 root root 4096 Aug 25 22:09 ../
-rw------- 1 root root 6814 Aug 27 10:32 .bash_history
-rw-r--r-- 1 root root 3894 Aug 27 10:34 .bashrc
-rw-r--r-- 1 root root  148 Aug 17  2015 .profile
-rw------- 1 root root 8628 Aug 27 10:33 .viminfo
[10:35:32@~]
$


# 最初出問題的時候通過下面步驟,發現PS1 和~/.bashrc中的64行的配置一致,
# 於是將64行的配置換成了別的PS1配置結局了這個問題...
# 但是其實後來我單獨測試的時候, 將整個檔案中的所有PS1配置全部刪掉值保留case "$TERM" in xterm*|rxvt*)中的一段後發現也沒問題...MMP
# 總而言是如果遇到命令不換行的時候, 換一下PS1 就對了.........

aaat@96e6800ffbe4:~# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
root@96e6800ffbe4:~# cat .bashrc | grep -in 'PS1'
6:[ -z "$PS1" ] && return
53:    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
56:    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
64:    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
root@96e6800ffbe4:~# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

# 檢視系統~/.bashrc中的系統預設PS1 配置
# 這裡可以發現PS1會根據不同的配置選擇不同的配置方式.....

 59 if [ "$color_prompt" = yes ]; then
 60     PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
 61 else
 62     PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
 63 fi
 64 unset color_prompt force_color_prompt
 65
 66 # If this is an xterm set the title to user@host:dir
 67 case "$TERM" in
 68 xterm*|rxvt*)
 69     PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
 70     ;;
 71 *)
 72     ;;
 73 esac

無法使用sudo命令

xxx is not in the sudoers file.This incident will be reported.的解決方法

1.切換到root使用者下,怎麼切換就不用說了吧,不會的自己百度去.

2.新增sudo檔案的寫許可權,命令是:
chmod u+w /etc/sudoers

3.編輯sudoers檔案
vim /etc/sudoers
找到這行 root ALL=(ALL) ALL,在他下面新增xxx ALL=(ALL) ALL (這裡的xxx是你的使用者名稱)

ps:這裡說下你可以sudoers新增下面四行中任意一條
youuser            ALL=(ALL)                ALL
%youuser           ALL=(ALL)                ALL
youuser            ALL=(ALL)                NOPASSWD: ALL
%youuser           ALL=(ALL)                NOPASSWD: ALL

第一行:允許使用者youuser執行sudo命令(需要輸入密碼).
第二行:允許使用者組youuser裡面的使用者執行sudo命令(需要輸入密碼).
第三行:允許使用者youuser執行sudo命令,並且在執行的時候不輸入密碼.
第四行:允許使用者組youuser裡面的使用者執行sudo命令,並且在執行的時候不輸入密碼.

4.撤銷sudoers檔案寫許可權,命令:
chmod u-w /etc/sudoers

這樣普通使用者就可以使用sudo了.

nginx: error while loading shared libraries: XXXXX: cannot open shared object file: No such file or directory

比如我在安裝NGINX時新增lua擴充套件時, 啟動nginx報錯

nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

我使用這個命令進行解決

# /usr/local/luajit/lib是我編譯luajit時通過make install PREFIX=/usr/local/luajit指定的目錄
echo "/usr/local/luajit/lib" >> /etc/ld.so.conf
# 然後執行如下命令:
ldconfig

之所以報這個錯是因為由於編譯時沒有生成動態連結庫,只能手動連結

/etc/ld.so.conf詳解

/etc/ld.so.conf 此檔案記錄了編譯時使用的動態庫的路徑,也就是載入so庫的路徑。
預設情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫檔案,而通常通過原始碼包進行安裝時,如果不指定--prefix會將庫安裝在/usr/local目錄下,而又沒有在檔案/etc/ld.so.conf中新增/usr/local/lib這個目錄>。
這樣雖然安裝了原始碼包,但是使用時仍然找不到相關的.so庫,就會報錯。也就是說系統不知道安裝了原始碼包。

對於此種情況有2種解決辦法:
    (1)在用原始碼安裝時,用--prefix指定安裝路徑為/usr/lib。這樣的話也就不用配置PKG_CONFIG_PATH
    (2)直接將路徑/usr/local/lib路徑加入到檔案/etc/ld.so.conf檔案的中。在檔案/etc/ld.so.conf中末尾直接新增:/usr/local/lib(這個方法給力!)

然後使用ldconfig 更新動態連結庫的配置資訊

ldconfig
再來看看ldconfig這個程式,位於/sbin下,它的作用是將檔案/etc/ld.so.conf列出的路徑下的庫檔案快取到/etc/ld.so.cache以供使用,因此當安裝完一些庫檔案,或者修改/etc/ld.so.conf增加了庫的新的搜尋路徑,需要運>行一下ldconfig,使所有的庫檔案都被快取到檔案/etc/ld.so.cache中,如果沒做,可能會找不到剛安裝的庫

Ubuntu系列下fcitx系列輸入法突然失效

fcitx輸入法無效,既不能用快捷鍵切換輸入法.又不能選擇輸入法,備選輸入法中一片空白,重灌搜狗輸入法也不行.

檢視 /var/log/syslog系統日誌,發現一堆fcitx的ERROR資訊

其中包括很多,這裡只列舉了一個比價重要的

GDBus.Error: org.freedesktop.DBus.Error.ServiceUnknown: The name org.fcitx.Fcitx-0 was not provided by any .service files

研究了很長時間,現在終於解決了,刪除`/.config資料夾裡面的fcitx即可,

在終端裡面敲fcitx -d如果出現了DBus Service Already Exists的報錯,重新安裝sudo apt-get install --resintall fcitx-fontend-gtk2 fctix-