Yesterday I ran into an issue with deleting files from atom editor .
When trying to delete a folder, I was presented with the message The following file couldn't be moved to trash (is gvfs-trash installed?)

Turns out, gvfs-trash is superseded by gio trash.
To solve this, you can simply create a file /usr/local/bin/gvfs-trash
with just the following contents:

#!/bin/bash

/usr/bin/gio trash !*

In fact, just an alias but as I don’t want to rely on reading ~/.profile / ~/.zshrc / ~/.bashrc , the above way just works for me.

First, thanks to Major Hayden for his blog post which pointed out the use of systemd-resolved:
https://major.io/2017/04/13/openstack-ansible-on-centos-7-with-systemd-networkd/

So, now we have the possibility to use systemd-networkd under ubuntu 18.04, I’d like to use it also under CentOS 7.
And yes, we can.

Install systemd-networkd:

yum -y install systemd-networkd

Disable network manager and enable networkd and resolved:

systemctl disable network NetworkManager
systemctl enable systemd-networkd systemd-resolved

Save the following contents to /etc/systemd/network/99-wildcard.network:

[Match]
Name=eth*

[Network]
DHCP=yes
IPv6AcceptRA=yes

(On my server the interface was no longer called ens3 but now eth0, hence the eth*)

Now create a symlink to the systemd-resolved resolv.conf:

rm -f /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

And just to be sure, reboot 🙂

Now we have it up and running:

[root@el7 ~]# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 eth0             ether              routable    configured

2 links listed.
[root@el7 ~]# networkctl status eth0
● 2: eth0
   Link File: n/a
Network File: /etc/systemd/network/99-wildcard.network
        Type: ether
       State: routable (configured)
        Path: pci-0000:00:03.0
      Driver: virtio_net
      Vendor: Red Hat, Inc.
       Model: Virtio network device
  HW Address: 1e:00:85:00:1b:5a
         MTU: 1500
     Address: 185.107.213.51
              2a00:f10:121:b00:1c00:85ff:fe00:1b5a
              fe80::1c00:85ff:fe00:1b5a
     Gateway: 185.107.213.3 (ICANN, IANA Department)
              fe80::d6ca:6dff:fe74:870d (Routerboard.com)
         DNS: 93.180.70.22
              93.180.70.30

Ubuntu’s first point release for Bionic Beaver (18.04 LTS) has been released.

Now this release has had some time to mature, it’s time to have a look.
First thing that you notice is that /etc/network/interfaces is no longer in use and we have netplan.io .

Come on Canonical, haven’t you learned from Mir?

So, if I’m to use this distro, I want to ditch netplan and use native systemd-networkd, which after all is what netplan is built onto.
So can we? Yes, we can.

With a simple setup where you only have one or more wired network cards, this is fairly straightforward.

Remove netplan:

apt remove netplan

Enable systemd-networkd

systemctl enable systemd-networkd

Add the following contents to a file called /etc/systemd/network/99-wildcard.network

[Match]
Name=en*

[Network]
DHCP=yes
IPv6AcceptRA=yes

(Of course I want IPv6 enabled)

Now reboot, and systemd-networkd is up and running:

root@1804:~# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 ens3             ether              routable    configured

2 links listed.

root@1804:~# networkctl status ens3
● 2: ens3
       Link File: /lib/systemd/network/99-default.link
    Network File: /etc/systemd/network/99-wildcard.network
            Type: ether
           State: routable (configured)
            Path: pci-0000:00:03.0
          Driver: virtio_net
          Vendor: Red Hat, Inc.
           Model: Virtio network device
      HW Address: 1e:00:6f:00:17:ac
         Address: 185.66.250.47
                  2a00:f10:121:a00:1c00:6fff:fe00:17ac
                  fe80::1c00:6fff:fe00:17ac
         Gateway: 185.66.250.3 (ICANN, IANA Department)
                  fe80::d6ca:6dff:fe74:870d (Routerboard.com)
             DNS: 93.180.70.22
                  93.180.70.30
                  2a00:f10:ff04:253::53
                  2a00:f10:ff04:153::53
  Search Domains: zone01.ams02.cldin.net
    Connected To: n06.c01.ap01.zone01.ams02.cldin.net on port fe:00:6f:00:17:ac (vnet37)

I use my smartphone regularly to login on servers of mine with SSH. This works really well, but obviously you have less width than with a normal computer screen.

Some tools, like w, will not work with this limited width and give you a message like 

w: 60 column window is too narrow

Being a sysadmin, I don’t like to be told something just can’t work. So, a little trick to make it work:

 w | cat

This will have w output it’s text through stdout to cat and cat just outputs the text to the console, no questions asked.

Yesterday I have installed Ubuntu 16.04 LTS on my laptop to try it out.
While overall the experience is quite good, I found that notifications were broken for apps like slack and atom.
Following the issue found on github, I have found the following workaround to work for me:

Add the following line to /etc/environment ( edit as root ) and reboot ( or logout and login )

ELECTRON_USE_UBUNTU_NOTIFIER=1

Here’s how I managed to install the memcached module for php 7.0 running on a server running CentOS with DirectAdmin.

Install the remi repo and install the latest version of memcached and libmemcached

yum -y install http://rpms.remirepo.net/enterprise/remi-release-$(awk -F 'release ' '{print $2}' /etc/system-release| head -c 1).rpm
yum --enablerepo remi install memcached libmemcached-last libmemcached-last-devel git

Now configure and install the memcached extension:

cd ~
git clone https://github.com/php-memcached-dev/php-memcached.git
cd php-memcached
git checkout php7
phpize
./configure --disable-memcached-sasl --with-php-config=/usr/local/php70/bin/php-config
make
sudo make install

Add the extension to the php config:

echo "extension=memcached.so" | sudo tee /usr/local/php70/lib/php.conf.d/60-memcached.ini

And finally, restart php-fpm:

service php-fpm70 restart

Or if you run mod_php:

service httpd restart

I have a system running several docker containers with httpd, mariadb and redis. The httpd containers are running with names like ‘site1tld_httpd_1’.
Each httpd container writes the access_log and error_log to a host volume in /srv/volumes/<vhost>/httpd/logs . Just easy to have them accessible.

For these containers, I needed to run logrotate to keep those files from getting too large. Of course, these docker containers just run httpd as pid 1 and do not have logrotate installed.
The solution for me was to have logrotate on the host rotate every log, and then reload every docker container running httpd. A httpd reload is just done by sending a kill signal 1 to the httpd process.

This is done as follows ( a file in /etc/logrotate.d ):

/srv/volumes/*/httpd/logs/*log {
  daily
  rotate 7
  create
  compress
  delaycompress
  nodateext
  sharedscripts
  postrotate
    docker ps -f name=httpd -q | xargs docker kill -s 1 >/dev/null 2>&1
  endscript 
}

So the postrotate section is simple but effective: give me the ids of docker containers with “httpd” in the name and feed those ids to docker kill and use signal 1 to notify each process.