Поскольку вы спрашивали, как это сделать с помощью systemd.& #9786;
Вот как люди из systemd говорили людям делать это.
Вы помещаете файл сервисного модуля в неправильный каталог. Он не должен идти в /etc/systemd
. Он даже не должен входить в /etc/systemd/system
. Он должен идти в ~marton/.config/systemd/user
.
Это связано с тем, что графическая программа, которую вы хотите запустить под своей учетной записью, является службой для -пользователя , а не системной службой. (В настоящее время вы используете веб-браузер в качестве суперпользователя. Это очень плохая идея. Прекратите это немедленно ! )Вы могли бы настроить его для всех пользователей в каталоге /etc/systemd/user
, но вполне вероятно, что не всем пользователям на вашем компьютере нужно запускать Chromium как службу. Поэтому настройте его только для своей учетной записи пользователя, в частности.
Так как это сервис для каждого -пользователя, вы должны манипулировать им с опцией --user
на systemctl
, без sudo
. Например:
systemctl --user status chrome.service
Это также относится к его включению и отключению.
В соответствии с -пользовательской единицей обслуживания это должно быть WantedBy=default.target
, потому что нет multi-user.target
для каждой -пользовательской службы. (Хотя я подозреваю, что на самом деле должно быть WantedBy=your-desktop-session.target
, что будет что-то вроде gnome-session.target
в зависимости от того, какой рабочий стол вы используете. То, что говорили люди из systemd, не совсем ясно по этому поводу.)
И одна часть задачи systemd, которую люди должны сделать для каждого -пользовательского сервиса, похожего на -логин -сервис сеанса, — это весь graphical-session
механизм, который ваш сервисный модуль должен включить в настройку:
[Unit] PartOf=graphical-session.target
Что еще вам нужно сделать, зависит от того, насколько OpenSuSE продвинулась со всей graphical-session
чепухой, которую разработчики systemd начали продвигать в 2016 году.Ubuntu и Debian предоставляют полный беспорядок закулисных сценариев оболочки при запуске и завершении сеанса входа в систему с графическим интерфейсом, который скрывает как запуск / остановку graphical-session.target
, так и внедрение переменной среды DISPLAY
. Если в вашем OpenSuSE этого еще нет, возможно, вам придется заполнить эту часть.
Awk
solución:
awk '{ print "Number of nucleotide G is "gsub("G", "") }' <<<"GTCGTAATGCGGATCGGAATCGA"
Number of nucleotide G is 8
grep
+wc
solución:
printf "Number of nucleotide G is %d\n" $(grep -o 'G' <<<"GTCGTAATGCGGATCGGAATCGA" | wc -l)
Number of nucleotide G is 8
Uso de Perl:
echo 'GTCGTAATGCGGATCGGAATCGA' | perl -ne 'printf "number of nucleotide G is %d\n", ($_ =~ tr/G/G/)'
Esto cuenta las G usando el operador tr
de Perl. Devuelve el número de reemplazos realizados y estamos reemplazando cualquier G con una G.
La salida será
number of nucleotide G is 8
Si desea generalizar esto para contar también otras bases, entonces no ejecute esto varias veces en datos del tamaño del genoma, pero vaya al sitio Bioinformatics StackExchange y busque para respuestas allí.
Con bash
var='GTCGTAATGCGGATCGGAATCGA'
var="${var//[^G]}"
echo "Number of nucleotide G is ${#var}"